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

java线程中断方法

2017-10-04 00:00 459 查看

java线程中断的方法。

Thread.stop()

stop方法可以直接结束线程,并立即会释放掉该线程持有的锁,方法过去暴力容易造成数据不一致。目前属于废弃方法不建议直接使用。

public class ThreadInteruptTest {
@SuppressWarnings("deprecation")
public static void main(String[] args) {
Thread tA = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
System.out.println("A thread runnint ...");
}
}
});
tA.start();
tA.stop();
}
}

Thread.interrupt()

通过interrupt方法,可以给线程设立个中断标记。结合Thread.isInterrupted()方法和static Thread.interrupted()方法来判断是否终止线程。Thread.isInterrupted()不会清除中断标记。static Thread.interrupted()会清除中断标记。

public class ThreadInteruptTest {
public static void main(String[] args) {
Thread tA = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
if(Thread.currentThread().isInterrupted()) {//Thread.interrupted()
System.out.println("A thread exit ...");
break;
}
System.out.println("A thread runnint ...");
}
}
});
tA.start();
tA.interrupt();
}
}

Thread.sleep(time)

Thread.sleep方法会因中断抛出InterruptedException异常。如果线程中包含sleep方法休眠。sleep方法抛出InterruptedException异常时会清除中断标记。我们需要手动捕获异常重新设置中断标记。

public class ThreadInteruptTest {
public static void main(String[] args) {
Thread tA = new Thread(new Runnable() {
@Override
public void run() {
while(true) {
if(Thread.currentThread().isInterrupted()) {//Thread.interrupted()
System.out.println("A thread exit ...");
break;
}
System.out.println("A thread runnint ...");
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
}
}
}
});
tA.start();
tA.interrupt();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息