java - 从非线程安全类实例化线程安全类

标签 java multithreading thread-safety

在非线程安全的类中,您必须避免使用类变量,因为它们可以由不同线程结束执行上下文共享。 但是,如果您实例化一个本身具有类变量的外部类,它们是线程安全的吗?

在此示例中,在线程之间共享计数器变量是否存在风险?

class MyNotThreadSafeClass()
{
   private integer sharedvariable;
   public void callAnOtherClass()
   {
      myClass o = new myClass();
      System.out.println(o.increment(counter));
   }
}

class myClass()
{
   private integer counter;
   public void increment() { return(counter++); }  
}

如果您有一个想法,谢谢(这个线程安全主题的文档不是很清楚)。

最佳答案

这是有效的,因为您从未将 o 传递给另一个线程。因此没有其他线程可以访问此实例。

一般模式是:如果您在多个线程之间共享一个实例,那么您需要进行某种同步。

如果不共享实例,线程再多也没关系。

关于java - 从非线程安全类实例化线程安全类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24386301/

相关文章:

java - 在重复控件数据绑定(bind)和行属性之间共享计算

java - 如何扩展 SQLiteDatabase 类?

java - 意外元素(uri :"",本地 :"Fid1Instruments")。预期元素为 <{http ://proba. org/proba}Fid1Instruments>

multithreading - 使用 OpenMP 时发生内存泄漏

java - 在服务器端查询http请求的困境

java - 是否可以停止某个线程的运行?

java - final 字段的线程安全

java - 如何检查光标是否在ResultSet的插入行中?

asp.net - 我应该关心 ASP .NET 中静态 int (4 字节)变量的线程安全吗

c++ - 以成员函数启动线程