class xian2 extends Thread{
static int i=500;
Object o=new Object();
public void run(){
while(i>0){
//如果i=2时停,被另一个线程执行一遍后该线程该线程如果没有判断继i值续执行。则会结果输出0.
System.out.println(this.getName());//假设:在双核以上的电脑中多个java进程同时执行。若是多个执行的进程速度不一样则此段代码会发生问题。
synchronized(o){
if(i>0)
System.out.println(this.getName()+"------卖出第"+i--+"张票");
}
}
}
}
//上面代码按要求当多个进程执行时,会从按顺序输出500到1。但是执行时输出顺序会错乱。为什么 |
|