线程的优势:
1). 发挥多处理器的强大能力:设计正确,多线程程序可以通过提高处理器资源的利用率来提升系统吞吐率;
2). 建模的简单性:通过线程,可以将复杂且异步的工作流进一步分解为一组简单且同步的工作流,每个工作流在单独线程中运行,并在特定的同步位置进行交互。框架的能力;
3). 异步事件的简化能力:虽然给每个请求都分配独立的线程,既简单又安全,但是依然不是个好办法,虽然现在操作系统支持的最大线程数量已经很高。后面会写个IO专题;
线程风险:
1). 安全性问题:在没有充足同步的情况下,多线程的执行顺序是不可预测的,可能产生奇怪的结果。如果错误的假设程序中的操作会按照某种特定顺序执行,那么你很可能得不到想要的结果。这里涉及的安全问题成为:竞态条件(Race Condition)。涉及JMM,后面会讲解;
2). 活跃性问题:活跃性是指“期望的正确的事情最终会发生”。线程死锁;
3). 性能问题:期望的事情尽快的发生。但线程调度会带来额外的性能开销;
线程问题的范围:
框架通过在框架线程中调用应用程序代码将并发性问题带入应用程序中。在代码中将不可避免的访问应用程序状态,因此,所有访问这些状态的代码路径都必须是线程安全的。
网友评论