从JDK源码角度看java并发线程的中断

        线程的定义给我们提供了并发执行多个任务的方式,大多数情况下我们会让每个任务都自行执行结束,这样能保证事务的一致性,但是有时我们希望在任务执行中取消任务,使线程停止。在java中要让线程安全、快速、可靠地停下来并不是一件容易的事,java也没有提供任何可靠的方法终止线程的执行。

        线程调度策略中有抢占式和协作式两个概念,与之类似的是中断机制也有协作式和抢占式。

        历史上Java曾经使用stop()方法终止线程的运行,他们属于抢占式中断。但它引来了很多问题,早已被JDK弃用。调用stop()方法则意味着

        ①将释放该线程所持的所有锁,而且锁的释放不可控。

        ②即刻将抛出ThreadDeath异常,不管程序运行到哪里,但它不总是有效,如果存在被终止线程的锁竞争;

        第一点将导致数据一致性问题,这个很好理解,一般数据加

你可能感兴趣的:(JVM,JDK源码,java开源研究)