线程 Thread 的 Interrupt 和 isInterrupted 打断线程的使用。
来源:互联网 发布:php无法调用mysql函数 编辑:程序博客网 时间:2024/05/29 04:35
Interrupt 能够和 isInterrupted 配合使用打断正在执行的线程。
package com.yuxin.learn;import java.io.IOException;import java.util.Scanner;import java.util.concurrent.ThreadPoolExecutor;public class Main {public static void main(String[] args) throws IOException{System.out.println("线程"+Thread.currentThread().getId()+"进入线程");Main test = new Main();MyThread myThread = test.new MyThread();myThread.start();try {Thread.currentThread().sleep(2000);} catch (Exception e) {// TODO: handle exception}myThread.interrupt();}class MyThread extends Thread{@Overridepublic void run() {System.out.println("线程"+Thread.currentThread().getId()+"进入线程");int i=0;//使用下面两种判断条件可以分别使线程 能够 和 不能够 被打断while( !isInterrupted() &&i<Integer.MAX_VALUE){//while(i<Integer.MAX_VALUE){System.out.println(i+" :while循环");i++;}if(i!=Integer.MAX_VALUE)System.out.println("由于while循环加入了isInterrupted作为判断条件,线程被打断了。");}}}
...184208 :while循环184209 :while循环184210 :while循环184211 :while循环184212 :while循环由于while循环加入了isInterrupted作为判断条件,线程被打断了。
但是一般情况下不建议通过这种方式来中断线程,一般会在MyThread类中增加一个属性 isStop来标志是否结束while循环,然后再在while循环中判断isStop的值。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class
MyThread
extends
Thread{
private
volatile
boolean
isStop =
false
;
@Override
public
void
run() {
int
i =
0
;
while
(!isStop){
i++;
}
}
public
void
setStop(
boolean
stop){
this
.isStop = stop;
}
}
那么就可以在外面通过调用setStop方法来终止while循环。
0 0
- 线程 Thread 的 Interrupt 和 isInterrupted 打断线程的使用。
- 使用interrupt()方法和isInterrupted()方法更好的实现主线程和子线程的配合
- Thread的interrupt、isInterrupted、interrupted源码探索
- Thread类的interrupt(),interrupted(),isInterrupted()
- java 多线程(2) 线程的调度和优先级 / sleep() / interrupt() 打断join() / yield() / setPriority()
- 线程中断,interrupt(),interrupted,isInterrupted()
- java Thread 线程的中断 interrupt
- Java中的线程的唤醒Thread.interrupt()
- 线程中断Thread.interrupt()的用法
- Java中的线程的唤醒Thread.interrupt()
- 线程中断 thread.interrupt()的用法
- 线程 中断 Thread.interrupt()使用
- thread.interrupt和线程中断
- Java中的线程中断:interrupt()、interrupted()和isInterrupted
- 【Java】interrupt、interrupted和isInterrupted的区别
- JAVA interrupt、interrupted和isInterrupted的区别
- interrupt(),interrupted() 和 isinterrupted() 的区别
- java---interrupt、interrupted和isInterrupted的区别
- 英语钻石法则(七)——【听-问答-复述故事】
- python 反射
- ubantu 14.04 的caffe 环境配置 仅CPU
- bootstrap的导航
- Android Studio SVN更新、提交代码
- 线程 Thread 的 Interrupt 和 isInterrupted 打断线程的使用。
- Eclipse导入Maven项目详解(新手初学)
- powerdesigner预览时加字段
- All kind of Concepts: in Android ...
- apktool.jar的使用,实现apk反编译读配置文件
- 不敢死队问题
- Ja
- Android自定义捕获Application全局异常
- 解决git 提交代码时提示空间不足:error: unpack failed: error No space left on device