`
阅读更多

当线程的run()方法执行方法体中最后一句语句后,并经由执行return语句返回时,或者出现了方法中没有捕获的异常时,线程将终止。

 

sleep : 该方法为static,并返回void值,在指定的毫秒数加指定的纳秒数内让当前正在执行的线程休眠(暂停执行),阻塞线程,所以只对当前运行线程起作用。与用类还是实例调用无关。

 

interrupt : 强制终止线程,并返回void值,当一个线程调用interrupt()方法可以用来请求终止线程。当对一个线程调用interrupt()方法时,线程的中断状态将被置位。但是如果线程被阻塞(调用sleep, wait),就无法检测中断状态,这是产生InterruptedException异常的地方。即如果目前线程被一个sleep调用阻塞,那么会抛出InterruptedException异常。

 

isInterrupted : 测试线程是否已经中断,想要弄清中断状态是否被置位,首先调用Thread.currentThread方法获得当前线程。然后调用isInterrupted方法。该方法不会抛出异常,如果该线程已经中断,则返回 true;否则返回 false。

 

interrupted:该方法为static,测试当前线程是否已经中断,它检测当前的线程是否被中断,并清除中断状态。线程的中断状态 由该方法清除 ,如果连续两次调用该方法, 则第二次调用将返回 false(在第一次调用已清除了其中断状态之后,且第二次调用检验完中断状态前,当前线程再次中断的情况除外)。

 

currentThread : 该方法为static,返回代表当前执行线程的Thread对象。

Thread.currentThread().isInterrupted()

     注意: 如果任何线程中断了当前线程。当抛出该异常时,当前线程的中断状态 被清除。 在不要在其他代码中catch Thread.sleep(xx)抛出的java.lang.InterruptedException: sleep interrupted,统一传递到run()方法中处理。 e.g. public void mySubTash() throws InterruptedException{... sleep(delay); ...}

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics