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(); } }
相关文章推荐
- Java多线程-通过线程的中断来深入学习interrupt方法,Volatile关键字
- JAVA中断线程的方法
- Java之多线程interrupt中断线程的三种方法
- JAVA中断线程的方法
- JAVA中断线程的方法
- Java 中断线程方法
- Java中实现线程的超时中断方法实例
- java线程基础巩固---Thread中断Interrupt方法学习&采用优雅的方式结束线程生命周期
- Java中断线程的方法
- java 线程的中断interrupt方法
- Java中断线程的方法
- java线程中断,interrupt()方法的一些示例
- Java中断线程的方法
- Java学习笔记78. 线程的中断入门 —— interrupt方法
- java线程中的若干重要方法
- Java多线程初学者指南(8):从线程返回数据的两种方法
- Java多线程初学者指南(7):向线程传递数据的三种方法
- Java多线程初学者指南(7):向线程传递数据的三种方法
- JAVA多线程-生产者与消费者当线程多时发生死锁的解决方法
- 在Java中实现线程的两种方法