我刚开始读Java Concurrency in Practice,从第17页:线程安全的程序如何包含非线程安全的类?
我们使用的术语“线程安全类”和“线程安全程序” 近互换迄今。线程安全的程序是完全由线程安全类构造的 吗?不一定 - 完全由线程安全类组成的程序可能不是 线程安全的,并且线程安全的程序可能包含非线程安全的 类。
- 如何线程安全的程序可能包含不线程安全类?其他代码示例将非常感激。
我刚开始读Java Concurrency in Practice,从第17页:线程安全的程序如何包含非线程安全的类?
我们使用的术语“线程安全类”和“线程安全程序” 近互换迄今。线程安全的程序是完全由线程安全类构造的 吗?不一定 - 完全由线程安全类组成的程序可能不是 线程安全的,并且线程安全的程序可能包含非线程安全的 类。
有两种基本的情况下,这是可能的:
非线程安全的对象仅限于单个线程。
访问共享的非线程安全对象由使用它们的线程在外部进行协调。非常简单的例子:通过同步与
synchronized(sharedObject) {
sharedObject.access();
}
因为局部变量只能被单线程访问,所以程序可能是线程安全的,并且使用局部变量,这些变量的类在其他情况下是非线程安全的。
或换句话说,你只需要担心在几个线程之间共享的实例是线程安全。 – SJuan76
无类是在真空中“安全”或“不安全”的所有访问。如果一个类被描述为“线程安全”,仅仅意味着它自己的“合同”不管线程是否被维护,而不是构建在它周围的应用程序将“继承”那个安全。 –
即时阅读同一本书。实际上,我明白一个线程安全的程序如何包含非线程安全的类。然而,我不明白你怎么能有一个程序是不是线程安全的,但完全由线程安全的类组成...... – dtc