线程的取消和关闭(JAVA并发编程实践笔记 一)

线程的取消和关闭
1. 任务取消
      当外部代码能够在活动自然完成之前,把它更改为完成状态,那么这个活动被称为可取消的。
2. 中断
      调用interrupt并不意味着必然停止目标线程正在进行的工作;它仅仅传递了请求中断的消息。
中断通常是取消最明智的选择。
      因为每一个线程都有其自己的中断策略,所以你不应该中断线程,除非你知道中断对这个线程意味着什么。
3. 通过Future来取消
4. 处理不可中断的阻塞
      a) java.io中的同步Socket I/O,可通过关闭底层的的Socket来实现。
      b) java.nio中的同步I/O。关闭InterruptibleChannel
      c) Selector的异步I/O。
      d) 获得锁
5. JVM的关闭
      正常关闭:当最后一个“正常(非精灵)”线程终结时,或者当有人调用了System.exit时,以及通过使用其他与平台相关手段时(比如发送了SIGINT,或键入Ctrl-C),都可以开始一个正常的关闭。尽管JVM可以通过这些标准的首先方法关闭,它仍然能够通过调用Runtime.halt或者“杀死”JVM的操作系统进行被强行关闭(比如发送SIGKILL)。

      关闭钩子是使用Runtime.addShutdownHook注册的尚未开始的线程。

 

你可能感兴趣的:(java,jvm,编程,socket,活动)