并发编程中遇到的挑战
技术上的挑战
- 线程的优化使用需要无阻塞的API,这本身就很稀少也很难于编写;
- 异步系统中的错误处理很难于管理.传统的错误处理策略在并发程序中很难正常的进行转换(异常和返回值);
- 对数据的访问控制必须时刻保持警惕.确保消除竟态条件和死锁可能带来的隐患;
- 设立两个对象之间的消息传递机制是为了消除竟态条件,并加快所需等待时间;
- 最常见的并发程序的复杂性会很大程度上增加重构的成本.
认识上的挑战
- 把对象和功能同时封装成一个并发模型会很难于形象化;
- 分割的数据结构对于并发访问很难于设计;
- 设计应用程序流程时系统瓶颈会变得不明显;
- 在设计和编码是,对于错误的处理会增加很多的心理负担.
Akka Tools
Actors:基于erlang并发模型的scala实现;
Futures:异步无阻塞支持;
Timers:计时器;
Callbacks/Closures: 回调和闭包;
Error Handling:错误处理;
Non-Blocking By Default:默认无阻塞.