我在我的类Server中有一个数据实例在两个线程之间共享:
public class Server{
public static void main(String[] args){
Data data = new Data();
Thread t1=new Thread(new ClientService(data));
Thread t2=new Thread(new PromoService(data));
t1.start();
t2.start();
}
以下是我的类的相关部分:
public class ClientService imp
好的,我刚刚读到了这个问题,,我使用了一个易失性变量来停止循环。我也看过这个引用,。现在这篇文章说易失性变量是非阻塞的。此外,它还指出,它不能用于读-更新-写序列中的并发。这是有道理的,因为它们是非阻塞的。
由于从不缓存易失性变量,简单地使用同步来停止循环(从较早的链接)是否更快?
编辑:使用同步解决方案
public class A{
private boolean test;
public A(){
test = true;
}
public synchronized void stop(){
test = false;
}
public sy
在“实践中的Java并发性”一书中,在3.1.1状态数据一节中,有一个代码
@NotThreadSafe
public class MutableInteger {
private int value;
public int get() { return value; }
public void set(int value) { this.value = value; }
}
它不是线程安全的,因为:
如果一个线程调用设置,调用get的其他线程可能会看到更新,也可能看不到。
而在set和get方法上使用同步关键字使其“正确”。多么?
@ThreadSafe
public class