Java内置的多线程是把双刃剑,一方面: 它提供了语言,库,以及跨平台的内存模型的支持,方便了用户对并发的开发。
另一方面,它降低了多线程开发的难度,导致了开发门槛低,但多线程是个高级话题,需要额外考虑多线程问题
1.3.1 正确性问题
多线程在缺乏充足同步的情况下,它们的运行结果是难以预料的。在没有同步控制下,编译器,硬件,运行过程中都可以对操作进行时间和顺序的改进。 如在寄存器或处理器缓存变量。因为这样做可以提高性能,但这样会破坏安全性
1.3.2 存活性问题
正确性问题在单线程和多线程都会出现,只是多线程会额外引入一些正确性问题。而存活性问题是多线程独有的。
存活性关注的是顺利达到了最终的结果。存活性问题是程序进入了一种无法通往成功的状态,就像死循环一样
多线程会额外带来死锁,饿死,活锁等存活性问题。这些问题很难定位,因为它们依赖于特定的时间或事件
1.3.3 性能问题
多线程会额外带来一些性能问题,并发设计良好的系统能够提高性能。但因为多线程本身也需要消耗一定运行时间。
在很多线程存在情况下,线程之间的却换会非常频繁,却换需要进行上下文却换等昂贵操作。
线程之间的同步操作会阻碍编译器优化,内存缓存失效,这些都会带来性能损失。
分享到:
相关推荐
内含 chapter02-chapter18 共 17 个实例性源码项目,内容循序渐进,由入门到精通。尤其适合于没有 Java 线程开发经验的朋友。自己动手敲出本资源解压缩后的 ...相信你理解了此源码之后,即可步入 Java 多线程开发。
金融风险管理Chapter_2财务风险管理的数理基础.pptx
Chapter 3 explains this in more detail. * Efficient time sharing: Using thread and process priorities, you can ensure that everyone gets a fair allocation of CPU time. The wise use of threads turns...
金融风险管理财务风险管理Chapter_4风险管理工具衍.pptx
操作系统原理:Chapter 4 线程.ppt
chapter03-风险识别.pptx
NULL 博文链接:https://hnzhoujunmei.iteye.com/blog/759558
Windows环境下的多线程编程电子书下 分上下两个压缩包
时域有限差分方法matlab实现,Atef Elsherbeni, 第一章课后习题答案
《Android开发案例驱动教程》全面介绍了在开源的手机平台Android操作系统下的应用程序开发技术,包括UI、多线程、数据存储、多媒体、云端应用以及通信应用等方面。 《Android开发案例驱动教程》采用案例驱动模式展开...
Chapter6Chapter6Chapter6Chapter6Chapter6Chapter6Chapter6
1.3. Chapter 3: Multiple activities and intents 1.4. Chapter 4: The activity lifecycle 1.5. Chapter 5: The user interface 1.6. Chapter 6: List views and adapters 1.7. Chapter 7: Fragments 1.8. Chapter...
资源以及补齐。 非网上的那些缺少Chapter02 Chapter03. 如果不对不要钱
Chapter4(信息模型)Chapter4(信息模型).Chapter4(信息模型).
通訊原理_Chapter5 通訊原理_Chapter5 通訊原理_Chapter5
chapter11.rar
用多线程的方式解决上一个程序的问题 Chapter12\Event ;使用事件对象 Chapter12\ThreadSynErr ;一个存在同步问题的多线程程序 Chapter12\ThreadSyn\UseCriticalSection ;使用临界区对象解决多线程同步问题 Chapter12...
数据库系统概论(chapter1-chapter6).zip
os orange chapter5_i os orange chapter5_i os orange chapter5_i os orange chapter5_i