有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

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

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

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++); }  
}

如果您有什么想法,谢谢您(本线程安全主题中的文档不是很清楚)


共 (1) 个答案

  1. # 1 楼答案

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

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

    如果不共享一个实例,那么是否有更多线程并不重要