Think in Java(十八):并发
来源:互联网 发布:mac邮箱 imap无法连接 编辑:程序博客网 时间:2024/04/26 12:43
1. 线程池
CacheThreadPool:(建议使用)
FixedThreadPool 使用有限的线程集来执行所提交的任务,可以限制线程的数量
SingleThreadExecutor: 线程数量为1的FixedThreadPool 任何时刻都只有一个线程在运行
2. yield:给线程调度机制一个暗示:你的工作已经做的差不多了,可以让别的线程使用CPU了
不过这只是一个暗示,没有任何机制保证它将会被采纳
3. join: 一个线程可以在其他线程之上调用join方法,其效果是等待一段时间直到第二个线程结束才继续执行。
4. 使用lock()和unlock()的好处:
使用synchronized关键字,当失败时,就会抛出一个异常,你没有机会做任何清理工作,使用显式lock,可以在finally子句中维护正确状态
显式lock对象在加锁和释放锁方面,可以实现更细粒度的控制
5. 像Vector和Hashtable这类早期容器具有许多synchronized方法,当他们用于非多线程的应用程序中,便会导致不可接受的开销
6. ConcurrentHashMap允许并发的读取和写入
CacheThreadPool:(建议使用)
FixedThreadPool 使用有限的线程集来执行所提交的任务,可以限制线程的数量
SingleThreadExecutor: 线程数量为1的FixedThreadPool 任何时刻都只有一个线程在运行
2. yield:给线程调度机制一个暗示:你的工作已经做的差不多了,可以让别的线程使用CPU了
不过这只是一个暗示,没有任何机制保证它将会被采纳
3. join: 一个线程可以在其他线程之上调用join方法,其效果是等待一段时间直到第二个线程结束才继续执行。
4. 使用lock()和unlock()的好处:
使用synchronized关键字,当失败时,就会抛出一个异常,你没有机会做任何清理工作,使用显式lock,可以在finally子句中维护正确状态
显式lock对象在加锁和释放锁方面,可以实现更细粒度的控制
5. 像Vector和Hashtable这类早期容器具有许多synchronized方法,当他们用于非多线程的应用程序中,便会导致不可接受的开销
6. ConcurrentHashMap允许并发的读取和写入
0 0
- Think in Java(十八):并发
- Think in Java——并发
- [think in java2]java并发问题总结
- [think in java2] java 并发发生死锁的条件
- think in java 读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- Think in java读书笔记
- think in java
- think in java
- Think in JAVA电子书
- Think in java读书笔记
- Think in java 笔记
- think in java
- think in java ch6
- think in java
- think in java
- 函数、作用域2
- UVA 763 - Fibinary Numbers(高精度斐波那契 + 高精度模板)
- 多线程之进程与线程的理解
- leetcode|4|Median of Two Sorted Arrays
- 阶梯电价
- Think in Java(十八):并发
- 【leetcode】 Insertion_Sort_List
- openGL es2.0 创建方向方体
- 【leetcode】 Single_Number_II
- 吸费手机招商 声讯电话代理
- 函数、作用域2
- swizzle交换方法名
- TASKLIST命令
- spring data jpa 学习