【发布时间】:2020-02-01 10:53:46
【问题描述】:
请看下面的代码。我知道为什么我不使用“同步”部分,循环永远不会中断,但我不知道为什么我使用“同步”部分,循环会中断。好像不符合 Happens-Before 原则。请帮帮我,非常感谢。
public class Test implements Runnable {
private String s = "continue";
@Override
public void run() {
while (!"break".equals(this.s)) {
//synchronized (this){
//
//}
}
System.out.println("loop has been breaked!");
}
public static void main(String[] args) throws InterruptedException {
Test test = new Test();
Thread t1 = new Thread(test);
t1.start();
TimeUnit.SECONDS.sleep(1);
test.s = "break";
}
}
【问题讨论】:
标签: java multithreading concurrency locking