java并发编程实战-读书笔记

来源:互联网 发布:德云社家谱知乎 编辑:程序博客网 时间:2024/05/17 05:13

1.进程有它自己的变量的完备集,线程则共享相同数据。

2.Executor代替Thread  任务提交和任务执行解耦。

3.Future 任务生命周期,描述任务执行 , 相当于一个单一计算句柄。 可以取消任务。

4.callable 抽象任务

5.comptionservice 相当于批处理计算的句柄

6.闭锁(CountDownLatch)等待的是事件,关卡(CyclicBarrier)等待的是其他线程

7.调用wait()前测试条件谓词,永远在循环中调用wait(),防止假唤醒(并不是唯一原因)

8.线程池、队列、饱和策略(调用者运行策略—将负荷逐渐往外移(池-->队列-->TCP层))

饱和策略:对于有界队列满了之后的一种策略,用semaphore可以实现限制任务注入率

9.优先使用newCachedThreadPool

 ①性能好,SynchronousQueue取代LinkedBlockingQueue

 ②有限线程池或队列可能发生死锁,若任务之间相互依赖。

10.线程池的有界无界并不代表工作队列的有界无界,两者无必然关系(对于无限的池,可以用SynchronousQueue来绕开队列)

11.递归通常的顺序化的,但如果每次迭代都是对立的,并且我们不必等待所有迭代都完成后再一起处理,则可以使用Executor把顺序转化为并行。

12.JVM内在同步:静态初始化是JVM完成的。JVM要在初始化期间获得一个锁,这个锁每个线程至少都会用到一次,来确保一个类是否已被加载。

0 0
原创粉丝点击