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();
}
}
网友评论