结论:
sleep休眠的是当前线程,就是谁调用Thread.sleep这行代码就是休眠哪个线程,
或者说是这行代码在哪个线程里面运行,就是休眠哪个线程
上代码
public class StringProblem { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println("我是第一个线程"); System.out.println(Thread.currentThread().getName()); } }).start(); try { System.out.println("当前线程是"+Thread.currentThread().getName()); Thread.sleep(5000);//主线程休息5秒 System.out.println("当前线程是"+Thread.currentThread().getName()); } catch (InterruptedException e) { e.printStackTrace(); } new Thread(new Runnable() { @Override public void run() { System.out.println("我是第二个线程"); System.out.println(Thread.currentThread().getName()); } }).start(); } }
运行结果分析
我是第一个线程
Thread-0
当前线程是main
我是第二个线程
Thread-1
由上面可以看出当调用Thread.sleep()之后打印出来的当前线程是Main线程
也就是说在Thread.sleep()让当前的main线程处于休眠状态当mian线程也就是主线程休眠时间到了之后开始执行下面的代码