第7章 取消与关闭

原创 2016年06月01日 00:30:38

第7章 取消与关闭

7.1 任务取消

7.1.1 中断

在Java的API或语言规范中,并没有将中断与任何取消语义关联起来,但实际上,如果在取消之外的其他操作中使用中断,那么都是不合适的,并且很难支持起更大的引用。

每个线程都有一个boolean类型的中断状态。当中断线程时,这个线程的中断状态将被设置为true.在Thread中包含了中断线程以及查询线程中断状态的方法。

Interrupt方法能中断目标线程。

isInterrupted方法将能返回目标线程的中断状态。

interrupted方法将清除当前线程的中断状态,并返回它之前的值,这也是清除中断状态的唯一方法。

*Thread中的中中断方法

public class Thread {

    public void interrupt() { ...}

    public boolean isInterrupted() {...}

    public static boolean interrupted() {...}

    ...

}

调用interrupt并不意味着立即停止目标线程正在进行的工作,而只是传递了请求中断的消息。

在使用静态的interrupted时应该小心,因为它会清除当前线程的中断状态。如果在调用interrupted时返回了true,那么除非你想屏蔽这个中断,否则必须对它进行处理——可以抛出InterruptedException,或者通过再次调用interrupt来恢复中断状态。

通常,中断是实现取消的最合理方式。

7.1.2 中断策略

由于每个线程都拥有各自的中断策略,因此除非你知道中断对该线程的含义,否则不应该中断这个线程。

7.1.3 响应中断

当调用可中断的阻塞函数时,有两种实用策略可用于处理InterruptedException:

*传递异常(可能在执行某个特定于任务的清除操作之后),从而使你的方法也成为可中断的阻塞方法。

*恢复中断状态,从而使调用栈中的上层代码能够对其进行处理。

7.1.4 示例:计时运行

7.1.5 通过Future来实现取消

ExecutorService.submit将返回一个Future来描述任务。Future拥有一个cancel方法,该方法带有一个boolean类型的参数mayInterruptIfRunning,表示取消操作是否成功。

如果mayInterruptIfRunning为true并且任务当前正在某个线程中运行,那么这个线程能被中断。

如果这个参数为false,那么意味着“若任务还没有启动,就不要运行它”

7.1.6 处理不可中断的阻塞

7.1.7 采用newTaskFor来封装非标准的取消

7.2 停止基于线程的服务

7.2.1 示例:日志服务

7.2.2 关闭ExecutorService

ExecutorService有两种关闭方法:使用shutdown正常关闭,以及使用shutdownNow强行关闭。

7.2.3 ”毒丸“对象

7.2.4 示例:只执行一次的服务

7.2.5 shutdownNow的局限性

7.3 处理非正常的线程终止

7.4 JVM关闭

7.4.1 关闭钩子

7.4.2 守护线程

7.4.3 终结器


版权声明:本文为博主原创文章,未经博主允许不得转载。

Java并发编程实战 - 第7章 取消与关闭

Java没有提供某种抢占式的机制来取消操作或结束线程。 可以通过协作式的中断机制来实现取消操作。 可以使用FutureTask和Executor框架,构建可以取消的任务和服务。...

第7章 启动和关闭Greenplum数据库

在Greenplum数据引擎数据库管理系统,数据库服务器实例(主机和所有段)启动或以这样的方式,他们可以作为一个统一的数据库管理系统一起工作的所有系统的主机停止。 因为一个Greenplum数据系统...
  • kygoal
  • kygoal
  • 2017年07月12日 08:45
  • 548

【读书笔记】TCP/IP网络编程 第7章 半关闭

第七章:优雅地断开连接半关闭:断开连接的一部分,可以传输数据但是无法接收,或可以接收数据但无法传输。closesocket()函数会同时断开输入及输出流。 半关闭函数:shutdown() SD_RE...

第7章 虚拟机类加载机制7.1~7.3

7.1概述 虚拟机把类的数据从class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。 类加载、连接和初始化是在类的运行期...

51单片机 第7章80C51单片机的串行口

  • 2014年09月18日 06:53
  • 2.91MB
  • 下载

【PMP】PMBOK 笔记 第7章 项目成本管理

第7章 项目成本管理项目成本管理包含为使项目在批准的预算内完成而对成本进行规划、估算、预算、融资、筹资、管理和控制的各个过程,从而确保项目在批准的预算内完工。项目成本管理应考虑干系人对掌握成本情况的要...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第7章 取消与关闭
举报原因:
原因补充:

(最多只允许输入30个字)