当前位置: 代码迷 >> J2SE >> 有关多线程同步的小疑点
  详细解决方案

有关多线程同步的小疑点

热度:99   发布时间:2016-04-23 19:40:31.0
有关多线程同步的小问题
先上代码
//同步代码块例子--正确的例子
public class Test{
public static void main(String[] args){
SalesWindow sw=new SalesWindow();
new Thread(sw,"窗口1").start();
new Thread(sw,"窗口2").start();
new Thread(sw,"窗口3").start();
new Thread(sw,"窗口4").start();
}
}
class SalesWindow implements Runnable{
private int tickets=10;
Object lock=new Object();
public void run(){
while(true){
synchronized(lock){
try{
Thread.sleep(10);
}
catch(InterruptedException e){
e.printStackTrace();
}
if(tickets>0){
System.out.println(Thread.currentThread().getName()+"正在出售第"+tickets--+"张票");
}
else{
break;
}
}
}
}
}
这个代码输出的结果为
线程1---卖出的票10
线程1---卖出的票9
线程1---卖出的票8
线程1---卖出的票7
线程1---卖出的票6
线程1---卖出的票5
线程1---卖出的票4
线程1---卖出的票3
线程1---卖出的票2
线程1---卖出的票1


我的问题是理论上不是应该4个线程一起来卖这10张票么?为什么在这只有线程1在卖,实在是搞不懂~求高人回答
------解决思路----------------------
哪一个线程执行是随机的,你用1000张票让这4个线程来处理,应该能看到其他线程执行
  相关解决方案