标签:style class blog c code java
当线程的run方法执行方法体中的最后一条语句后,并由执行return语句返回时,或者出现了方法中没有捕获的异常时,线程将终止。
有一种可以强制线程终止的方法:interrupt可以用来请求终止线程。当对一个线程调用interrupt方法时,线程的中断状态将被置位,每一个线程都具有boolean标记。每个线程都应该不时的检查这个标记,以判断线程十分被中断。
要想清楚中断状态十分被置位,首先调用静态的Thread.currentThread()方法获得当前线程,再调用isInterrupted 方法就可以判断的出来。一般格式是下面这样的
while(!Thread.currentThread().isInterrupted()&&more work to do) { //do more work }
我们要清楚线程中断,只不过是把线程打上一个标记,其实线程的状态还是可运行的(理解成还在运行中)。这样我可以决定如何响应中断。
线程阻塞,那么isInterrupted实例方法就不能检测出中断标记,这样就会产生InterruptedException异常。
这种线程的run方法具体格式如下:
public void run() { try { //... while(Thread.currentThread().isInterrupted()&&more work to do) { //do more work } } catch(InterruptedException e) { } finally { } }
注意点: Thread中有几个相似的方法,大家一定要区分开。
1.void interrupt(): 向线程发生中断请求,线程的中断状态将被设置为true.
2.static boolean interrupted():这个是静态方法,检测当前线程(正在执行这个命令的线程)是否被中断。同时它还会清楚当前线程的中断状态重置为flase.
3.boolean inInterrupted() 这个是实例方法,检查线程十分被中断,它不会重置线程的中断状态。
4.static Thread currentThread():返回代表当前线程的Thread对象。
Java的多线程 --线程中断,布布扣,bubuko.com
标签:style class blog c code java
原文地址:http://www.cnblogs.com/JFCao/p/3742591.html