为了方便的阅读、理解 Spark 源码,debug 是个好方式。来介绍一下Spark 在 IntelliJ IDEA 中 Debug 环境构建。
线程的最主要目的是提高程序的运行性能,使程序更加充分地发挥系统的可用处理能力,从而提高系统的资源利用率,此外,还可以使程序在运行现有任务的情况下立即开始处理新的任务,从而提高系统的响应性。许多提升性能同样会增加复杂性,也会增加在安全性和活跃性上发生失败的风险。
在安全性与活跃性之间通常存在着某种制衡,我们使用加锁机制来确保线程安全,但如果过度地使用加锁,则可能导致“锁顺序死锁”。同样,我们使用线程池和信号量来限制对资源的使用,但这些被限制的行为可能会导致资源死锁。
这一部分将介绍对线程池进行配置与调优的一些高级选项,并分析在使用任务执行框架时需要注意的各种危险, 以及一些使用 Executor的高级示例。
Java没有提供任务安全结束线程的机制,提供了中断,这是一种协作机制:使一个线程终止另一个线程。
为什么是协作机制:1、立即停止会造成数据结构的不一致性 2、任务本身比其他线程更懂得如何清除当前正在执行的任务
软件质量的区别:良好的软件能很好的处理失败、关闭、结束等过程。