要使线程安全、快速、可靠的停下来并非易事,java并未提供机制保证线程安全的停止,但是我们可以通过使用中断来完成线程的停止和关闭; 本章节只总结基础线程的取消和关闭,类似封装库提供的方法如Future、线程池不在本章节讨论。 1、interrupted方法 Thread提供了中断相关的方法,这里需要 ...
分类:
编程语言 时间:
2019-10-05 12:59:49
阅读次数:
120
1.停止线程的几种方式 1.1 一般的逻辑停止 上面的代码如果在线程的运行逻辑中有调用阻塞的方法。就会导致cancel的判断永远不会执行。所以可以采用中断的方式 1.2 中断 ...
分类:
编程语言 时间:
2018-08-31 17:06:55
阅读次数:
142
要使线程安全,快速,可靠的停下来并不是一件容易的事情。java并没有提供任何机制来安全的终止线程。但是java提供了中断(interrupt)使一个线程可以终止另一个线程的当前工作 每个线程都有一个boolean类型的中断状态。当中断线程时,这个线程的中断状态将被设置未true。Thread包含了中 ...
分类:
编程语言 时间:
2018-07-03 23:56:42
阅读次数:
245
取消和关闭任务的方法:标志状态域、中断、Future、重写不可中断的阻塞的interrupt()方法、通过线程池的shutdown()和shutdownNow()方法、生产者消费者中加入毒丸对象、try finally中处理非常正线程终止。 ...
分类:
编程语言 时间:
2018-05-11 16:09:29
阅读次数:
206
7 取消与关闭 7.1.5通过Future来实现取消 Future.get抛出异常,当你知道不在需要这个结果,可以调用Future.caneel来取消任务。 7.1.6 处理不可中断的阻塞(非标准的取消) 在Java库中,许多可阻塞的方法都是通过提前返回或者抛出InterruptedExceptio... ...
分类:
其他好文 时间:
2018-03-10 14:02:56
阅读次数:
173
如果外部代码可以再某个操作正常完成之前就将其置入“完成”状态,那么这个操作就是可以取消的。取消的原因有:用户请求取消、有时间限制的操作、应用程序事件、错误和关闭等 中断 如果使用某方法的任务调用了一个阻塞方法,那么任务可能永远都不会检查取消标志,那么操作永远都不会结束。 线程中断是一种协作机制,线程 ...
分类:
编程语言 时间:
2018-02-14 16:43:37
阅读次数:
150
《java并发编程实战》的第7章是任务的取消与关闭。我觉得这一章和第6章任务执行同样重要,一个在行为良好的软件和勉强运行的软件之间的最主要的区别就是,行为良好的软件能很完善的处理失败、关闭和取消等过程。 一、任务取消 在java中没有一种安全的抢占式(收到中断请求就立刻停止)的方式来停止线程,因此也 ...
分类:
编程语言 时间:
2017-10-04 12:17:15
阅读次数:
262
任务取消,线程中断,通过FutureTask和Executor框架,构建可取消的任务和服务。线程的异常处理,JVM关闭 ...
分类:
编程语言 时间:
2017-07-07 17:26:19
阅读次数:
311
任务和线程的启动很容易。然而,有时候我们希望提前结束任务或线程,或许是因为用户取消了操作,或者应用程序需要被快速关闭。 要使任务和线程能安全/快速/可靠地停止下来,并不是一件容易的事。Java没有提供任何机制来安全地终止线程,但它提供了中断,这是一种协作机制,能够使一个线程终止另一个线程的工作。 1 ...
分类:
编程语言 时间:
2017-06-07 10:11:55
阅读次数:
148
这章的主要内容是关于如何使任务和线程安全,快速,可靠的停止下来。 7.1 任务取消 在Java中没有一种安全的抢占方式来停止线程,但是可以使用一些协作机制,比如: 让素数生成器运行1秒后取消(并不会刚好在运行1秒后停止,因为在请求取消的时刻和run方法中循环执行下一次检查之间可能存在延迟): -7. ...
分类:
编程语言 时间:
2017-05-27 20:40:10
阅读次数:
327