[关闭]
@myecho 2019-03-18T19:28:56.000000Z 字数 1561 阅读 766

concurrent 探秘

Java


java中并发组件

Executor :具体Runnable任务的执行者。
ExecutorService :一个线程池管理者,其实现类有多种,我会介绍一部分。我们能把Runnable,Callable提交到池中让其调度。
Semaphore :一个计数信号量
ReentrantLock :一个可重入的互斥锁定 Lock,功能类似synchronized,但要强大的多。
Future :是与Runnable,Callable进行交互的接口,比如一个线程执行结束后取返回的结果等等,还提供了cancel终止线程。
BlockingQueue :阻塞队列。
CompletionService : ExecutorService的扩展,可以获得线程执行结果的
CountDownLatch(用于等待某种事件) :一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。
CyclicBarrier(用于等待一组线程) :一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点
Future :Future 表示异步计算的结果。
ScheduledExecutorService :一个 ExecutorService,可安排在给定的延迟后运行或定期执行的命令。

java7中添加的forkandjoin的框架:
https://segmentfault.com/a/1190000000377675,可与java8中结合,一定程度上可以模拟coroutine效果

java8中CompletableFuture对Future的改进,添加了回调机制。 http://colobu.com/2016/02/29/Java-CompletableFuture/

7天7并发

下边是书中提到的7种并发模型,以后需要不断回顾并复习。
1. thread+lock
2. functional programming to avoid mutable state
3. 各类协程实现,用户级线程,并提供用户态调度
4. Actor,含有mailbox,且消息的sender和receiver是明确的
5. CSP,golang中,没有信箱,通过channel实现,sender和receiver不明确,4和5都讲究Don’t communicate by sharing memory, share memory by communicating
6. 并行的data stream,流处理
7. The lambda架构 https://zhuanlan.zhihu.com/p/20510974#!

参考:
1. http://www.ibm.com/developerworks/cn/java/j-5things4.html
2. http://www.ibm.com/developerworks/cn/java/j-5things5.html
3. http://docs.oracle.com/javase/7/docs/api/java/util/concurrent/package-summary.html
4. 并发之痛 http://jolestar.com/parallel-programming-model-thread-goroutine-actor/
5. 为什么Akka的Actor模型是鸡肋?http://mp.weixin.qq.com/s?__biz=MzIxMjAzMDA1MQ==&mid=2648945615&idx=1&sn=a8512203402ac0ae9cadcba832e0e534&chksm=8f5b54c3b82cddd52f514a379e8daf56f8e3c63255ef350871ea2a0e737cc4df357f77133f8d#rd

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注