1700449909
1700449910
public void run(){
1700449911
1700449912
//判断线程体是否运行
1700449913
1700449914
while(stop){
1700449915
1700449916
//Do Something
1700449917
1700449918
}
1700449919
1700449920
}
1700449921
1700449922
//线程终止
1700449923
1700449924
public void terminate(){
1700449925
1700449926
stop=true;
1700449927
1700449928
}
1700449929
1700449930
}
1700449931
1700449932
这是很简单的办法,在线程体中判断是否需要停止运行,即可保证线程体的逻辑完整性,而且也不会破坏原子逻辑。可能有读者对Java API比较熟悉,于是提出疑问:Thread不是还提供了interrupt中断线程的方法吗?这个方法可不是过时方法,那可以使用吗?它可以终止一个线程吗?
1700449933
1700449934
非常好的问题,interrupt,名字看上去很像是终止一个线程的方法,但是我可以很明确地告诉你,它不是,它不能终止一个正在执行着的线程,它只是修改中断标志而已,例如下面一段代码:
1700449935
1700449936
public static void main(String[]args){
1700449937
1700449938
Thread t1=new Thread(){
1700449939
1700449940
public void run(){
1700449941
1700449942
//线程一直运行
1700449943
1700449944
while(true){
1700449945
1700449946
System.out.println(“Running……”);
1700449947
1700449948
}
1700449949
1700449950
}
1700449951
1700449952
};
1700449953
1700449954
//启动t1线程
1700449955
1700449956
t1.start();
1700449957
1700449958
//中断t1线程
[
上一页 ]
[ :1.700449909e+09 ]
[
下一页 ]