java吧 关注:1,245,258贴子:12,720,851
  • 1回复贴,共1

Java并发编程可见性问题咨询

只看楼主收藏回复

Thread t2 = new Thread(()->{
while(true) {
if(Thread.currentThread().isInterrupted()) {
System.out.println(x);
break;
}
}
},"t2");
t2.start();
new Thread(()->{
try {
sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
x = 10;
t2.interrupt();
},"t1").start();
while(!t2.isInterrupted()) {
Thread.yield();
}
System.out.println(x);
}
为什么主线的循环会无法结束,当在while(!t2.isInterrupted()) 循环中加入System.out.pritln或者移除Thread.yield之后循环可以正常结束,现在给我的感觉是Thread.yield会影响t2中断状态的可见性


IP属地:江苏1楼2024-09-23 15:14回复
    等个大佬解答


    IP属地:江苏2楼2024-09-23 15:36
    回复