interrupt()搞不懂…… 这个Java Doc上讲的好抽象, 貌似一个线程interrupt()之后再sleep()就抛出错误了? 为什么?- - 

解决方案 »

  1.   

    是已经在sleep的时候被interrupt了就会抛出错误
    比如,你在睡觉的时候被吵醒了,你也会很生气啊,就是这个道理
    我们把thread去sleep是为了规划程序的执行时间,假如提前被interrupt了,那么就会打乱我们的执行规律,甚至可能使程序崩溃,为了阻止这种情况发生,我们必须对出现这样的情况的错误进行捕捉,并且处理这些错误,使我们的规划能够顺利进行
      

  2.   

    当然,如果这个线程已经interrupt了(并且调用这个方法的时候没有sleep、wait等方法),那么它的interrupted状态就是true了,任何情况下,当这个状态为true的时候,sleep、wait等方法的执行都会产生错误
    当然任何情况下,当sleep、wait等方法正在执行的时候interrupted状态为true时也会产生错误。也就是说,任何情况下,当interrupt方法和sleep方法相遇的瞬间,都会发生异常,而interrupted状态也马上变为false。