sleep使线程进入休眠状态
interrup()激活线程
class Shop implements Runnable {
Thread zhangWorker,wangWorker,boss;
Shop() {
boss=new Thread(this);
zhangWorker=new Thread(boss);
wangWorker=new Thread(boss);
zhangWorker.setName("张工");
wangWorker.setName("王工");
boss.setName("老板");
}
public void run() {
int i=0;
if(Thread.currentThread()==zhangWorker) {
while(true) {
try{ i++;
System.out.printf("\n%s已搬运了%d箱苹果\n",zhangWorker.getName(),i);
if(i==3)
return;
Thread.sleep(10000);
}
catch(InterruptedException e) {
System.out.printf("\n%s让%s继续工作",
boss.getName(),zhangWorker.getName());
}
}
}
else if(Thread.currentThread()==wangWorker) {
while(true) {
try{ i++;
System.out.printf("\n%s已搬运了%d箱香蕉\n",wangWorker.getName(),i);
if(i==3)
return;
Thread.sleep(10000);
}
catch(InterruptedException e) {
System.out.printf("\n%s让%s继续工作",
boss.getName(),wangWorker.getName());
}
}
}
else if(Thread.currentThread()==boss) {
while(true) {
zhangWorker.interrupt(); // 吵醒zhangWorker
wangWorker.interrupt(); // 吵醒wangWorker
if(!(wangWorker.isAlive()||zhangWorker.isAlive())) {
System.out.printf("%n%s下班",boss.getName());
return;
}
}
}
}
}
public class ShopExample {
public static void main(String args[]) {
Shop shop=new Shop();
shop.zhangWorker.start();
shop.wangWorker.start();
shop.boss.start();
}
}