分析火车站售票出现问题原因

2019-03-31  本文已影响0人  卓昂芭比

if(num>0) {

t、t2、t3

假设只剩一张票

t过来了if(num>0){}但身体不舒服,上卫生间了

t2过来了if(num>0){}他也身体不舒服,上卫生间了

t3过来了if(num>0){}身体也不舒服,上卫生间了

t回来,开始售票  num=0

t2回来,开始售票  num=-1

t3t回来,开始售票  num=-2

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+":"+num--);

}

  static void sleep(long mills)在指定的毫秒数内让当前正在执行的线程休眠

public class TicketTest implements Runnable {

int num=100;

public void run() {

while(true) {

if(num>0) {

try {

Thread.sleep(100);

} catch (InterruptedException e) {

// TODO 自动生成的 catch 块

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName()+":"+num--);

}

}

// TODO 自动生成的方法存根

}

}

package RunnableTest1;

public class TicketThread {

public static void main(String[] args) {

//创建多个窗口对象

TicketTest tt=new TicketTest();

Thread t=new Thread(tt);

t.setName("窗口1");

Thread t2=new Thread(tt);

t2.setName("窗口2");

Thread t3=new Thread(tt);

t3.setName("窗口3");

//启动多线程对象

t.start();

t2.start();

t3.start();

}

}

上一篇下一篇

猜你喜欢

热点阅读