线程的阻塞、中断小结
来源:互联网 发布:手柄震动测试软件 编辑:程序博客网 时间:2024/06/07 10:23
interrupt
线程不能在运行时被中断,它的作用是在线程被阻塞时抛出中断异常,然后线程可以继续执行。
中断类型
1. 线程执行碰到object.wait(),需要等待notify()
2. 碰到Thread.sleep()
3. 调用别的线程的join()
4. I/O阻塞
5. 拿不到锁对象
其中,1.2.3可以被中断,4.5不可被中断。
验证代码段1:
static Runnable runnable = new Runnable() { @Override public void run() { for (int i=0;i<1000;i++){ System.out.println(i); } } }; public static void main(String[] args){ Thread thread = new Thread(runnable); thread.start(); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("befor interrupt"); thread.interrupt(); System.out.println("after interrupt"); }输出:
479
480
481
befor interrupt
482
after interrupt
483
484
485
480
481
befor interrupt
482
after interrupt
483
484
485
即已经在执行的线程不会被中断,会一直执行完。
代码段2:
static Runnable runnable = new Runnable() { @Override public void run() { System.out.println("beforSleep time = " + System.currentTimeMillis()); try { Thread.sleep(5000); } catch (InterruptedException e) { System.out.println("InterruptedException"); } System.out.println("afterSleep time = " + System.currentTimeMillis()); } }; public static void main(String[] args){ Thread thread = new Thread(runnable); thread.start(); try { Thread.sleep(5); } catch (InterruptedException e) { e.printStackTrace(); } System.out.println("befor interrupt"); thread.interrupt(); System.out.println("after interrupt"); }
输出:
beforSleep time = 1499741340999
befor interrupt
after interrupt
InterruptedException
afterSleep time = 1499741341004
befor interrupt
after interrupt
InterruptedException
afterSleep time = 1499741341004
从打印的时间看,Sleep(5000)开始后,很快就被打断了,sleep的时间不到1秒。
阅读全文
0 0
- 线程的阻塞、中断小结
- 线程的中断阻塞与控制
- java 线程 阻塞中断 InterrupedtException
- Java线程阻塞与中断
- Java线程阻塞中断和LockSupport的常见问题
- java线程阻塞中断和LockSupport的常见问题
- java 编程思想笔记 中断阻塞的线程
- java线程阻塞中断和LockSupport的常见问题
- 有关线程中断和线程阻塞
- 有关线程中断和线程阻塞
- Thread.interrupt():中断阻塞(的)线程,(跳出阻塞)使其抛出InterruptedException
- android中的线程中断小结
- C#线程阻塞、中断与终止
- Java中用interrupt()方法中断阻塞线程
- Java线程阻塞中断和LockSupport问题
- Java线程阻塞中断和LockSupport问题
- Java 线程阻塞、中断及优雅退出
- C#学习笔记(1):中断被Socket.Accept阻塞的线程
- Bokeh库
- NKOJ-3697 乒乓比赛
- elasticsearch-5.5 安装以及基础入门
- 修改Linux下MySQL表名大小写敏感
- 查看崩溃日志
- 线程的阻塞、中断小结
- 错误分类:通用错误和页面级错误(项目总结)
- 天文摄影的后期处理
- 关于Eclipse使用Ctrl键卡顿的原因及解决办法
- Java概述
- Python中的reduce
- LeetCode-1:Two Sum
- jrtplib V3.11.1 收包流程
- 微信小程序开发之formId使用(模板消息)