2个 sleep()分别代表什么意思?
import java.util.concurrent.*;
import static net.mindview.util.Print.*;public class SimpleDaemons implements Runnable {
  public void run() {
    try {
      while(true) {
        TimeUnit.MILLISECONDS.sleep(100);  //1、这里的 sleep()是指这个线程将在100毫秒后结束?
        print(Thread.currentThread() + " " + this);
      }
    } catch(InterruptedException e) {
      print("sleep() interrupted");
    }
  }
  public static void main(String[] args) throws Exception {
    for(int i = 0; i < 10; i++) {
      Thread daemon = new Thread(new SimpleDaemons());
      daemon.setDaemon(true); 
      daemon.start();
    }
    print("All daemons started");
    TimeUnit.MILLISECONDS.sleep(175); //2、这里的意思是100毫秒后 main()方法结束?
  }
}
如果main()设定的毫秒先结束,那么线程就不再执行了?,这么搞有意义吗?

解决方案 »

  1.   

    sleep是睡眠指定的时间,这里线程不会结束,因为这是个while(true)循环。
    同样main也不会结束。
    为什么把sleep和结束联系起来了呢?
      

  2.   

    饿~~上面已经取外号了....可我不明白这sleep()的意义,能帮我解释下吗?
      

  3.   

    TimeUnit.MILLISECONDS.sleep(100); 跟 Thread.sleep(100, 0); 没什么区别,使当前线程休眠 100 毫秒。当休眠的时间单位比较大时比如休眠 3 小时使用 TimeUnit 能方便一点,对比一下下面代码就知道了:
    TimeUnit.HOURS.sleep(3); 等价的代码是 Thread.sleep(1000L * 60 * 60 * 3, 0);