2

我刚开始阅读Java Concurrency in Practice,从第 17 页开始:

到目前为止,我们几乎可以互换使用术语“线程安全类”和“线程安全程序”。线程安全程序是完全由线程安全类构成的吗?不一定——完全由线程安全类组成的程序可能不是线程安全的,线程安全程序可能包含非线程安全的类。

  • 线程安全程序如何包含非线程安全的类?额外的代码示例将不胜感激。
4

2 回答 2

5

有两种基本情况是可能的:

  1. 非线程安全对象仅限于单个线程。

  2. 对共享的非线程安全对象的访问由使用它们的线程进行外部协调。极其简单的示例:通过将所有访问与

        synchronized( sharedObject ) {
            sharedObject.access();
        }
    
于 2013-08-24T23:52:04.000 回答
1

因为局部变量只能由单个线程访问,所以程序可以是线程安全的,并使用其类在其他情况下是非线程安全的局部变量。

于 2013-08-24T23:25:07.927 回答