shibuyarin
shibuyarin
2017-10-17 12:49

多线程经典案例 卖票问题的一个疑问

  • java
  • 多线程

public class test{
public static void main(String arg[]){
MyThread my = new MyThread();
new Thread(my,"seller A").start();
new Thread(my,"seller B").start();
new Thread(my, "seller C").start();
}

}
class MyThread implements Runnable{
private int ticket =5;
@Override
public void run() {
for (int x=0;x if(this.ticket>0) {
try {
Thread.sleep(100);
}catch(InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName()+
" sell,ticket " + this.ticket--);
}
}
}
}
既然JMM的机制是各个线程单独将主存中的数据拷贝进独立的cache中,那为什么还会出现 sell ticket -1 这种情况?

  • 点赞
  • 回答
  • 收藏
  • 复制链接分享

2条回答