while(true)
{
System.out.println("kkkkkk");
Thread.currentThread().interrupt();
}
主程序中运行以上一段代码时,不断打印kkkk
当我把后面一句改成Thread.currentThread().sleep(10000)的时候为什么仍然要等待10秒后才打印kkkk 的值,
睡眠了难道就不中断当前代码的线程么?中断和睡眠有什么区别,本人感觉都是使线程进入阻塞状态啊它们到底有什么区别啊?

解决方案 »

  1.   

    interrupt就是CPU告诉线程你平时态度不太好,我看你不爽,所以你就暂时别干了,什么时候再干,我再告诉你;sleep就是CPU告诉线程说哥们你别太累了,干一次活休息10秒钟,然后再接着干吧,如此反复!
      

  2.   

    sleep就是暂时让出CPU而已,时间到了,继续运行。
    stop,yield,wait之类的如楼主所想那般。
      

  3.   

    休息期间 while难道不执行么?
      

  4.   

    这是单线程的,sleep已经就是相当于是在执行了。时间到了,就继续执行while。
      

  5.   

    sleep是让线程进入等待池  未被打断的情况下时间到了就会自动启动
      

  6.   

    sleep让程序自动进入睡眠状态, 但它并不释放对象锁,就是如果有Synchronized同步块,其他线程仍然不同访问共享数据。注意该方法要捕获异常 
    中断是中断当前运行的程序,然后等待被调用,释放对象锁·
      

  7.   


    这个经典,sleep不释放对象锁