全部,
编写线程安全程序应该采用什么方法。给定一个问题陈述,我的观点是:
1 > 首先为单线程环境编写代码。
2 > 在需要原子性的字段下划线并替换为可能的并发类
3 > 在关键部分下划线并将其括在同步
中
4> 执行死锁测试
有人对我的方法的其他方法或改进有任何建议吗?到目前为止,我可以看到自己将大部分代码都包含在同步块(synchronized block)中,并且我确信这是不正确的。
Java 编程
最佳答案
编写正确的多线程代码很困难,并且没有神奇的公式或一组步骤可以帮助您实现这一目标。但是,您可以遵循一些准则。
就我个人而言,我不会先为单线程环境编写代码,然后将其转换为多线程环境。好的多线程代码在设计之初就考虑到了多线程。字段的原子性只是并发代码的要素之一。
您应该决定代码的哪些区域需要多线程(在多线程应用程序中,通常并非所有内容都需要线程安全)。然后您需要设计这些部分如何是线程安全的。使代码的一个区域成为线程安全的方法可能与使其他区域不同的方法不同。例如,了解是否会有大量读取和写入很重要,并且可能会影响您用来保护数据的锁类型。
不变性也是线程安全代码的关键要素。当元素是不可变的(即无法更改)时,您无需担心多个线程修改它们,因为它们无法更改。这可以极大地简化线程安全问题,并让您能够专注于拥有多个数据读取器和写入器的地方。
了解 Java 中并发的细节(以及 Java 内存模型的细节)非常重要。如果您还不熟悉这些概念,我建议您阅读 Java 并发实践 http://www.javaconcurrencyinpractice.com/ .
关于java - 线程安全程序的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3902955/