使用interrupt()方法和isInterrupted()方法更好的实现主线程和子线程的配合
来源:互联网 发布:手机淘宝无法评价订单 编辑:程序博客网 时间:2024/06/04 19:31
在java的线程Thread类中有三个方法,
(1)interrupt:置线程的中断状态
(2)isInterrupt:线程是否中断
-----------------------
(1)interrupt:置线程的中断状态
(2)isInterrupt:线程是否中断
(3)interrupted:返回线程的上次的中断状态,并清除中断状态
如果A线程去做一些A任务(比如下载数据)的时候,期望B线程来做一些B任务(比如刷新界面显示状态)。等到A任务做完的时候,我们希望这时候来关闭B线程。如果使用interrupt()方法和isInterrupted()就很好实现.
package interrupttest;class MyThread extends Thread{ int count = 0; @Override public void run() { // TODO Auto-generated method stub System.out.println(getName()+"将要运行..."); while (!this.isInterrupted()) { System.out.println(getName()+"运行中..."+count++); try { Thread.sleep(400);//休眠400毫秒 //执行B任务 } catch (InterruptedException e) { //退出阻塞时捕获异常 // TODO: handle exception System.out.println(getName()+"从阻塞状态中退出..."); this.interrupt(); //改变线程状态,使循环结束 } } System.out.println(getName()+"已经终止了线程..."); } }
-----------------------
package interrupttest;public class InterruptTest {public static void main(String[] args) {MyThread myThread = new MyThread();myThread.setName("MyThread");myThread.start();try {Thread.sleep(4000);//主线程休息2秒,好让其他线程运行 //执行B任务System.out.println(myThread.getName()+"开始准备终止线程...");myThread.interrupt();}catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace();} }}
- 使用interrupt()方法和isInterrupted()方法更好的实现主线程和子线程的配合
- 线程 Thread 的 Interrupt 和 isInterrupted 打断线程的使用。
- 主线程和工作线程的配合
- interrupt(), isInterrupted(), interrupted() 方法的区别
- 【Java】interrupt、interrupted和isInterrupted的区别
- JAVA interrupt、interrupted和isInterrupted的区别
- interrupt(),interrupted() 和 isinterrupted() 的区别
- java---interrupt、interrupted和isInterrupted的区别
- interrupt、interrupted和isInterrupted的区别
- interrupt、interrupted和isInterrupted的区别
- 关于interrupt,interrupted和isInterrupted的理解
- interrupt、interrupted和isInterrupted的区别
- interrupt(),interrupted() 和isInterrupted()使用
- 主线程和子线程之间的交互的实现
- 主线程和子线程的合理使用01
- 主线程和子线程的合理使用02
- 主线程和子线程的合理使用03
- 主线程和子线程的双向通信
- 8.4.1(最优装载问题_简单贪心)
- hibernate中注解Annotation总结大全
- 99道lisp练习题----(三)格雷码和haffman树
- A. Amusing Joke
- ADB 设置远程调试
- 使用interrupt()方法和isInterrupted()方法更好的实现主线程和子线程的配合
- Centos_vsftpd.sh
- hdu 2500
- Rman进度查询
- java设计模式之命令模式
- C++类的多态性与虚函数的使用
- 硬盘整数分区计算方法(精确硬盘分区算法)
- POJ 1330(Nearest Common Ancestors-Lca模板题)
- c#字典