interrupt要领
当我们挪用线程的sleep要领或许join要领时,都能够让某一些线程处于守候状况,挪用当前线程的interrupt()要领就能够打断该阻塞状况。interrupt要领不会让线程完毕。
public void interrupt();// 中断线程的阻塞状况
此要领会抛出一个InterruptedException
非常。
java相干进修视频引荐:java课程
案例:演示中断sleep的守候状况
线程类:
package com.pbteach.thread; public class MyThread extends Thread { @Override public void run() { for(int x = 0 ; x < 100 ; x++) { System.out.println(Thread.currentThread().getName() + "----" + x ); if(x == 10) { try { TimeUnit.SECONDS.sleep(10); // 线程休眠今后,该线程就处于阻塞状况 } catch (InterruptedException e) { e.printStackTrace(); } } } } }
测试类:
package com.pbteach.thread; public class ThreadDemo { public static void main(String[] args) { // 建立MyThread线程对象 MyThread t1 = new MyThread(); t1.setName("pbteach-01"); // 启动线程 t1.start(); try { // 主线程休眠2秒 TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 中断t1线程的休眠 t1.interrupt(); } }
输出效果:
... pbteach-01----10 java.lang.InterruptedException: sleep interrupted at java.base/java.lang.Thread.sleep(Native Method) at java.base/java.lang.Thread.sleep(Thread.java:339) at java.base/java.util.concurrent.TimeUnit.sleep(TimeUnit.java:446) at com.pbteach.javase.thread.api.demo14.MyThread.run(MyThread.java:14) pbteach-01----11 ...
经由过程控制台的输出效果,我们能够看到interrupted要领并没有去完毕当前线程,而是将线程的阻塞状况中断了,中断阻塞状况今后,线程pbteach-01继续进行实行。
stop要领
挪用线程的stop要领能够让线程停止实行。
public final void stop() // 停止线程的实行
线程类
package com.pbteach.thread; public class MyThread extends Thread { @Override public void run() { for(int x = 0 ; x < 100 ; x++) { System.out.println(Thread.currentThread().getName() + "----" + x ); if(x == 10) { try { TimeUnit.SECONDS.sleep(10); // 线程休眠今后,该线程就处于阻塞状况 } catch (InterruptedException e) { e.printStackTrace(); } } } } }
测试类:
package com.pbteach.thread; public class ThreadDemo1 { public static void main(String[] args) { // 建立MyThread线程对象 MyThread t1 = new MyThread(); t1.setName("pbteach-01"); // 启动线程 t1.start(); try { // 主线程休眠2秒 TimeUnit.SECONDS.sleep(2); } catch (InterruptedException e) { e.printStackTrace(); } // 停止线程t1的实行 t1.stop(); } }
输出效果:
... pbteach-01----9 pbteach-01----10
控制台没有任何非常的的输出,顺序完毕,"pbteach-01"线程没有继续进行实行。
相干文章教程引荐:java编程入门
以上就是java线程中断之interrupt和stop的细致内容,更多请关注ki4网别的相干文章!