Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
wushizhenking
CS-Notes
提交
185c4e52
C
CS-Notes
项目概览
wushizhenking
/
CS-Notes
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
C
CS-Notes
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
185c4e52
编写于
3月 29, 2018
作者:
C
CyC2018
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
auto commit
上级
ee840b79
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
5 addition
and
4 deletion
+5
-4
notes/Java 并发.md
notes/Java 并发.md
+5
-4
未找到文件。
notes/Java 并发.md
浏览文件 @
185c4e52
...
...
@@ -176,7 +176,9 @@ main() 属于非后台线程。
阻塞是一种状态,而睡眠和挂起是一种手段,通过睡眠和挂起可以让一个线程进入阻塞状态。
睡眠和挂起这两种手段的区别是,一个使用睡眠方式阻塞的线程在一个指定的时间之后(Thread.sleep(millisec) 的 millisec 参数指定)会退出阻塞状态,而一个使用挂起方式阻塞的线程必须等到其它线程给它发消息它才能退出阻塞状态。
睡眠和挂起这两种手段的区别是,挂起手段会释放对象锁,而阻塞手段不会。
应该注意的是,睡眠和挂起都可以设置一个等待时间,超过等待时间之后,线程会退出阻塞状态。但是如果不为挂起设置等待时间,那么它只能等到通知的到来才能退出阻塞状态。
## 中断
...
...
@@ -305,7 +307,6 @@ public synchronized void before() {
1.
wait() 是 Object 类的方法,而 sleep() 是 Thread 的静态方法;
2.
挂起会释放锁,睡眠不会。
3.
挂起必须等待其它线程的通知才能结束阻塞状态,而睡眠会在一定的时间之后自动结束。
### 2. BlockingQueue
...
...
@@ -405,9 +406,9 @@ Consumer-4 is consuming product.( Made By Producer-4 )
1.
新建(New):创建后尚未启动;
2.
可运行(Runnale):可能正在运行,也可能正在等待 CPU 时间片;
3.
无限期等待(Waiting):等待其它线程显示地唤醒,否则不会被分配 CPU 时间片;
4.
限期等待(Timed Waiting):无
序
等待其它线程显示地唤醒,在一定时间之后会被系统自动唤醒;
4.
限期等待(Timed Waiting):无
需
等待其它线程显示地唤醒,在一定时间之后会被系统自动唤醒;
5.
阻塞(Blocking):等待获取一个排它锁,如果其线程释放了锁就会结束此状态;
6.
死亡(Terminated)
6.
死亡(Terminated)
:可以是线程结束任务之后自己结束,或者产生了异常而结束,中断机制就是使用了抛出中断异常的方式让一个阻塞的线程结束。
# 六、Executor
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录