Java Thread.interrupt方法
来源:互联网 发布:世界营销网络地图 编辑:程序博客网 时间:2024/05/22 10:28
Java Thread.interrupt方法
Thread.interrupt()方法
Thread.interrupt()方法不会终止一个正在运行的线程,只是发出一个阻塞状态,调用Thread.interruped()和isInterrupted()方法可以判断。
public class ThreadInterrup {public static void main(String[] args) {try {ThreadA threadA = new ThreadA();threadA.start();Thread.sleep(100);threadA.interrupt();System.out.println("In Thread main threadA.isInterrupted() = " + threadA.isInterrupted());Thread.sleep(100);System.out.println("In Thread main setPause at " + System.currentTimeMillis());threadA.setPause(true);} catch (InterruptedException e) {e.printStackTrace();}}static class ThreadA extends Thread {private volatile boolean pause;public void run() {while(!pause) {}System.out.println("In ThreadA end at " + System.currentTimeMillis());}public void setPause(boolean pause) {this.pause = pause;}}}
虽然调用了Thread.interrupt(),但线程并没有停止。必须调用其他方式才能停止。
In Thread main threadA.isInterrupted() = trueIn Thread main setPause at 1489726867303In ThreadA end at 1489726867303
Thread.interrupt()和wait()方法
如果线程正在等待状态或者即将进入等待状态,都会引发异常。
public class ThreadInterrupWait {public static void main(String[] args) {try {Object lock = new Object();ThreadA threadA = new ThreadA(lock);threadA.start();Thread.sleep(100);threadA.interrupt();Thread.sleep(100);ThreadB threadB = new ThreadB(lock);threadB.start();Thread.sleep(100);threadB.interrupt();} catch (InterruptedException e) {e.printStackTrace();}}static class ThreadA extends Thread {private Object lock;public ThreadA(Object lock) {this.lock = lock;}public void run() {synchronized (lock) {try {lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("In ThreadA end at " + System.currentTimeMillis());}}static class ThreadB extends Thread {private Object lock;public ThreadB(Object lock) {this.lock = lock;}public void run() {synchronized (lock) {try {Thread.sleep(1000);lock.wait();} catch (InterruptedException e) {e.printStackTrace();}}System.out.println("In ThreadB end at " + System.currentTimeMillis());}}}
Thread.interrupt()和Thread.sleep()方法
如果线程正在睡眠状态或者即将进入睡眠状态,都会引发异常。
public class ThreadInterrupSleep {public static void main(String[] args) {try {ThreadA threadA = new ThreadA();threadA.start();Thread.sleep(1000);threadA.interrupt();Thread.sleep(1000);ThreadB threadB = new ThreadB();threadB.start();Thread.sleep(1000);threadB.interrupt();threadB.setPause(true);} catch (InterruptedException e) {e.printStackTrace();}}static class ThreadA extends Thread {public void run() {try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}System.out.println("In ThreadA end at " + System.currentTimeMillis());}}static class ThreadB extends Thread {private volatile boolean pause;public void run() {while (!pause) {}try {Thread.sleep(10000);} catch (InterruptedException e) {e.printStackTrace();}}public void setPause(boolean pause) {this.pause = pause;}}}
0 0
- Java Thread.interrupt方法
- java Thread interrupt方法
- Java中的线程Thread方法之---interrupt()
- Java中的线程Thread方法之---interrupt()
- Java中的线程Thread方法之---interrupt()
- Java中Thread的interrupt()方法
- Java中的线程Thread方法之---interrupt()
- Java中的线程Thread方法之---interrupt()
- Java中的线程Thread方法之---interrupt()
- Thread.interrupt方法
- Thread.interrupt()方法
- Thread interrupt 方法
- Thread.interrupt()方法理解
- java Thread interrupt()
- think in java笔记: Thread的interrupt()方法
- Thread interrupt() 方法的使用
- C#Thread的Interrupt方法
- Thread的interrupt()方法排雷
- 链表的操作(C语言实现)
- Struts2基础学习总结
- Android自定义View——刮刮卡效果
- Mysql忽略主键冲突,避免重复插入的几种方式
- linux chmod权限问题
- Java Thread.interrupt方法
- LeetCode 53. Maximum Subarray
- 什么是软件精灵?软件精灵功能介绍
- 三.统一异常处理器配置
- gulp前端自动化构建工具(四):gulp文件路径处理模块
- linux添加exFat支持
- 解决 Android N 7.0 上 报错:android.os.FileUriExposedException
- 搭建Android开发环境
- lua基本函数库