关于sleep方法的问题,我不太明白sleep到底休眠的时哪个线程

关于sleep方法的问题,我不太明白sleep到底休眠的时哪个线程

public class Threadone implements Runnable{
 @Override
 public void run() {
  for(int i = 0;i<10;i++) {
   System.out.println(Thread.currentThread().getName()+i);
  }
 }
 public static void main(String[] args) throws InterruptedException {
  Threadone t = new Threadone();
  Thread t1 = new Thread(t,"线程f");
  t1.sleep(10000);
  t1.start();
  for(int i=0;i<10;i++) {
   System.out.println("主线程运行"+i);
  }
 }

}

老师您好,请问这个时候的sleep方法休眠的是主线程么

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

你好!sleep()方法是静态方法,它会让当前正在执行的线程休眠。因为是静态方法,所以使用类名Thread去调用该方法即可,哪个正在执行的线程执行到这个方法,那么就是哪个线程休眠。

从你的代码看,是主线程休眠了,因为另一个线程还没有启动,你可以在sleep()方法调用前打印输出正在运行的线程名称看看,输出结果是main,然后就开始休眠。

http://img1.sycdn.imooc.com//climg/5be394f300010ffb09210305.jpg


祝学习愉快!

  • 暖阳洋 提问者 #1
    老师我觉得t1线路程不会休眠吧,因为sleep在主线程的方法里啊
    2018-11-08 10:00:49
  • 好帮手慕珊 回复 提问者 暖阳洋 #2
    嗯,t1没有休眠。刚才看结果看错了 。又试了一下,确实是要t1是整体执行完,中间没被打断的。祝学习愉快!
    2018-11-08 10:21:58
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师