您的位置:首页 > 编程语言 > Java开发

java 多线程 停止线程几种方式

2018-02-06 17:45 274 查看
1.Thread.stop();使用该方法停止线程是线程不安全的,会释放被锁的对象,导致对象的值错误。该方法不建议使用。会自动抛出ThreadDeath异常。

2.使用interrupt()方法,该方法只是给线程标记一个停止的状态,并不会真正的停止线程。需要配合this.interrupted()方法判断该线程是否是标记了停止状态,并且得到值后会把线程的状态改为false;

例如:

class T1 extends Thread{

@Override
public void run(){

super.run();
try {

for (int i =0;i<500000;i++) {
if (i== 100)
this.interrupt();
if (this.isInterrupted()) {
System.out.println("线程已停止");
throw new InterruptedException();
}
System.out.println("i="+(i+1));
}
System.out.println("我在for循环下面");
}catch (InterruptedException ex){
System.out.println("进入cache啊");
ex.printStackTrace();
}
}
}

3.也可以interrupt()配合return停止线程

class T1 extends Thread{

@Override
public void run(){

super.run();

for (int i =0;i<500000;i++) {
if (i== 100)
this.interrupt();
if (this.isInterrupted()) {
System.out.println("线程已停止");
return;
}
System.out.println("i="+(i+1));
}
System.out.println("我在for循环下面");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: