java线程阻塞中断和LockSupport的常见问题
来源:互联网 发布:2015网络流行词大全 编辑:程序博客网 时间:2024/06/06 03:48
这里仅包含要讨论的几个问题的答案,具体讨论过程查看原文:java线程阻塞中断和LockSupport的常见问题
问题1: Thread.interrupt()方法和InterruptedException异常的关系?是由interrupt触发产生了InterruptedException异常?
答: Thread.interrupt()只是在Object.wait() .Object.join(), Object.sleep()几个方法会主动抛出InterruptedException异常。而在其他的的block常见,只是通过设置了Thread的一个标志位信息,需要程序自我进行处理。
if (Thread.interrupted()) // Clears interrupted status! throw new InterruptedException();
问题2:Thread.interrupt()会中断线程什么状态的工作? RUNNING or BLOCKING?
答:Thread.interrupt设计的目的主要是用于处理线程处于block状态,比如wait(),sleep()状态就是个例子。但可以在程序设计时为支持task cancel,同样可以支持RUNNING状态。比如Object.join()和一些支持interrupt的一些nio channel设计。
问题3: 一般Thread编程需要关注interrupt中断不?一般怎么处理?可以用来做什么?
答: interrupt用途: unBlock操作,支持任务cancel, 数据清理等。
问题4: LockSupport.park()和unpark(),与object.wait()和notify()的区别?
答:
1. 面向的主体不一样。LockSuport主要是针对Thread进进行阻塞处理,可以指定阻塞队列的目标对象,每次可以指定具体的线程唤醒。Object.wait()是以对象为纬度,阻塞当前的线程和唤醒单个(随机)或者所有线程。
2. 实现机制不同。虽然LockSuport可以指定monitor的object对象,但和object.wait(),两者的阻塞队列并不交叉。可以看下测试例子。object.notifyAll()不能唤醒LockSupport的阻塞Thread.
问题5: LockSupport.park(Object blocker)传递的blocker对象做什么用?
答: 对应的blcoker会记录在Thread的一个parkBlocker属性中,通过jstack命令可以非常方便的监控具体的阻塞对象.
- Java线程阻塞中断和LockSupport的常见问题
- java线程阻塞中断和LockSupport的常见问题
- java线程阻塞中断和LockSupport的常见问题
- Java线程阻塞中断和LockSupport问题
- Java线程阻塞中断和LockSupport问题
- java线程阻塞中断与LockSupport使用介绍
- 线程阻塞工具:LockSupport
- LockSupport的park和unpark的基本使用,以及对线程中断的响应性
- LockSupport的park和unpark的基本使用,以及对线程中断的响应性
- java 线程 阻塞中断 InterrupedtException
- Java线程阻塞与中断
- java基础线程-LockSupport
- 线程的阻塞、中断小结
- 有关线程中断和线程阻塞
- 有关线程中断和线程阻塞
- java 编程思想笔记 中断阻塞的线程
- Java中用interrupt()方法中断阻塞线程
- Java 线程阻塞、中断及优雅退出
- 菜鸟先飞之JAVA_网络编程
- 频繁项集与关联规则(英文版)
- 日志系统和插件式存储引擎架构
- ios-MapKit在ios9新增加的属性
- Palindrome Number--LeetCode
- java线程阻塞中断和LockSupport的常见问题
- $(document).ready(function(){...})和$(document).load(function(){...})的区别
- [PAT] 1006 Sign In and Sign Out (25)
- CodeForces #431 849D Rooter's Song 技巧题
- (MY)SQL基本语句
- id()函数
- Codeforces Round #194 (Div. 1)
- eclipse启动服务器出错
- 原码, 反码, 补码 详解