Java 线程安全程序如何包含非线程安全的类?

Java 线程安全程序如何包含非线程安全的类?,java,multithreading,concurrency,Java,Multithreading,Concurrency,我刚开始读第17页: 我们使用了术语“线程安全类”和“线程安全程序” 到目前为止几乎可以互换。线程安全程序是 完全由线程安全类构造?不一定 完全由线程安全类组成的程序可能不可用 线程安全,线程安全程序可能包含 不是线程安全的 线程安全程序如何包含非线程安全的类?额外的代码示例将不胜感激 由于局部变量只能由单个线程访问,因此程序可以是线程安全的,并使用局部变量,这些局部变量的类在其他情况下是非线程安全的。有两种基本情况是可能的: 非线程安全对象仅限于单个线程 对共享的非线程安全对象的访问由使用它

我刚开始读第17页:

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

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

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

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

  • 非线程安全对象仅限于单个线程

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


  • 或者,换句话说,您只需要担心多个线程之间共享的实例是线程安全的。没有一个类是真空中的“安全”或“不安全”。如果一个类被描述为“线程安全”的话,那只意味着不管线程如何,它自己的“契约”都会得到维护,而不是说围绕它构建的应用程序会“继承”这个安全性。我现在正在读同一本书。实际上,我理解线程安全程序如何包含非线程安全的类。然而,我不明白你怎么能有一个程序不是线程安全的,但完全由线程安全类组成。。。
        synchronized( sharedObject ) {
            sharedObject.access();
        }