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 楼答案
这是有效的,因为您从未将
o
传递给另一个线程。所以没有其他线程可以访问这个实例一般的模式是:如果在多个线程之间共享一个实例,那么需要进行某种同步
如果不共享一个实例,那么是否有更多线程并不重要