java线程(sleep的使用)

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

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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();
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值