Two-phapse-Termination[A终止B线程]

一:Two-phapse-Termination的参与者
--->A线程
--->B线程

       

二:Two-phapse-Termination模式什么时候使用
--->当A线程需要B线程终止时


三:Two-phapse-Termination思考
       ---> 优雅的终止线程
        (1)安全地终止(安全性)==>即使收到终止请求,也不会马上结束线程,而是表示收到终止请求的标识。以对象不被损坏为前提,安全终止
        (2)一定会进行终止处理(生命性)==>当收到终止请求,会中断掉可以中断的wait,前往终止处理。异常处理要非常小心,防止抛出异常,破坏对象。
        (3)送出终止请求后,要尽快进入终止处理(响应性)==>当收到终止请求,可以中断掉Sleep,尽快终止处理

四进阶说明        
--->首先来说说java中的中断机制,Java 中断机制是一种协作机制,也就是说通过中断并不能直接终止另一个线程,而需要被中断的线程自己处理中断。当调用interrupt()方法的时候,只是设 置了要中断线程的中断状态,而此时被中断的线程的可以通过isInterrupted()或者是interrupted()方法判断当前线程的中断状态是

--->interrupte()和interrupted()和isInterrputed()方法的区别
        (1)线程对象.interrupte()是将调用该方法的对象所指的线程的中断状态修改为:【中断状态】
        (2)Thead.interrputed()是检查当前线程的中断状态,如果为中断状态,则返回true,并将中断状态清除掉。如果为非中断状态,返回false
        (3)线程对象.isInterrputed()是返回当前线程是否为中断状态,并不会修改线程的中断状态

---->wait方法被中断后,不会立马跑出InterrptedException,而是要重新获取锁定,才可抛出该异常。

--->书上一种解释:
        A线程中b.interrput()执行,B线程正处于sleep或wait状态,则会立马提前放弃休眠或等待,抛出interrputedException异常。线程的【中断状态】会立马被清除掉。
        【测试未得到印证】
-->书上另一种解释
        A线程中b.interrpt()执行,B线程刚开始准备执行sleep或wait,执行时会检查线程的状态,如果为中断状态,则跑出InterrptedException异常。线程的【中断状态】会立马被清除掉。



Two-phapse-Termination 例子
主线程A(要停掉B线程)

 1 package com.yeepay.sxf.thread10;
 2 /**
 3  * 测试主线程A线程
 4  * @author sxf
 5  *
 6  */
 7 public class Test {
 8     public static void main(String[] args) {
 9         //开启收拾玩具的线程
10         CountAddThread addThread=new CountAddThread();
11         //开启线程
12         new Thread(addThread).start();
13         //让主线程休息5秒
14         try {
15             Thread.sleep(5000);
16         } catch (InterruptedException e) {
17             // TODO Auto-generated catch block
18             e.printStackTrace();
19         }
20         //关闭收拾玩具线程
21         addThread.shutDownRequest();
22         
23     }
24 }
View Code

相关文章:

  • 2021-12-22
  • 2021-11-16
  • 2022-12-23
  • 2022-02-18
  • 2021-06-08
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
猜你喜欢
  • 2021-11-02
  • 2021-05-28
  • 2021-08-28
  • 2022-01-02
  • 2021-10-17
  • 2021-10-23
  • 2021-07-15
相关资源
相似解决方案