对并发编程网的学习跟笔记总结 http://ifeve.com/java-concurrency-thread-directory/
1、多线程的优点:
资源利用率更好
程序设计更简单
程序响应更快
总的来说,多线程可以充分利用CPU资源,帮助我们编写出高性能的程序
2、代价
设计更复杂
上下文切换的开销(当CPU从执行一个线程切换到执行另外一个线程的时候,它需要先存储当前线程的本地的数据,程序指针等,然后载入另一个线程的本地数据,程序指针等,最后才开始执行。这种切换称为“上下文切换”(“context switch”)。CPU会在一个上下文中执行一个线程,然后切换到另外一个上下文中执行另外一个线程)
增加资源消耗
一、并发编程模型
并发模型与分布式系统之间的相似性
并发系统中线程之间可以相互通信。在分布式系统中进程之间也可以相互通信(进程有可能在不同的机器中)。线程和进程之间具有很多相似的特性
并行工作者模型
在并行工作者模型中,委派者(Delegator)将传入的作业分配给不同的工作者。每个工作者完成整个任务。工作者们并行运作在不同的线程上,甚至可能在不同的CPU上
并行工作者模式的优点是,它很容易理解。你只需添加更多的工作者来提高系统的并行度
缺点及对共享数据的并发操作还需参考http://ifeve.com/%E5%B9%B6%E5%8F%91%E7%BC%96%E7%A8%8B%E6%A8%A1%E5%9E%8B/
二、流水线并发模型(也称为反应器系统或事件驱动系统)
实际应用当中,系统作业可以想象成有多条流水线操作,甚至也有可能被转发到超过一个工作者上并发处理
反应器/事件驱动平台 :
- Vert.x
- AKKa
- Node.JS(JavaScript)
三。函数式并行模型(参考java8的stream特性和函数式编程里Monad的概念)