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();
}
}
本文通过一个具体的示例展示了如何使用Java实现线程管理。示例中定义了一个商店场景,包含两个工人线程(张工和王工)负责搬运水果,并有一个老板线程负责监督并唤醒工人线程继续工作。文章通过具体的代码片段详细介绍了线程的启动、休眠、中断等操作。

被折叠的 条评论
为什么被折叠?



