当前位置: 首页 > news >正文

h5页面 个人网站/网站地址ip域名查询

h5页面 个人网站,网站地址ip域名查询,关于古风的网站建设项目,郯城做网站目录一、简述二、用两阶段终止模式终止监控操作1.利用 interrupted2.利用停止标记一、简述 Two Phase Termination:简单来说就是将终止过程分成两个阶段,其中第一个阶段主要是线程 T1 向线程 T2发送终止指令,而第二阶段则是线程 T2响应终止指…

目录

  • 一、简述
  • 二、用两阶段终止模式终止监控操作
    • 1.利用 interrupted
    • 2.利用停止标记

一、简述

Two Phase Termination:简单来说就是将终止过程分成两个阶段,其中第一个阶段主要是线程 T1 向线程 T2发送终止指令,而第二阶段则是线程 T2响应终止指令(在这之前先进行处理操作。例如:释放锁,释放资源等)。而不是使用线程对象的 stop() 方法强制停止线程。

二、用两阶段终止模式终止监控操作

实际工作中,需要有监控系统(监控线程)动态的检测被监控系统。监控系统发送采集指令从被监控系统收集数据。出于对性能的考虑,动态采集功能一般都会有终止操作。

下面通过interrupt() 方法和线程终止的标志位模拟监控线程的终止操作。

1.利用 interrupted

@Slf4j(topic = "c.MonitorTest ")
class MonitorTest {private Thread monitor;public void start(){monitor = new Thread(() -> {while(true) {Thread current = Thread.currentThread();if(current.isInterrupted()) {log.debug("料理后事(释放资源等操作)");break;}try {Thread.sleep(1000);log.debug("接受数据");} catch (InterruptedException e) {//在外部进行了监控线程终止操作后,即stop//监控线程再次进入while循环后isInterrupted会返回true,最后退出循环结束线程//当外部进行终止操作时,监控线程可能执行到sleep,这时执行interrupt会发生异常,并清除打断标记//所以在catch块中要重新打断设置打断标记log.debug("重新打断");current.interrupt();}// 执行监控操作}},"监控线程");monitor.start();}public void stop() {monitor.interrupt();}
}
public static void main(String[] args) throws Exception{MonitorTest monitorTest=new MonitorTest();monitorTest.start();Thread.sleep(2500);log.debug("执行监控线程终止操作");monitorTest.stop();}
11:31:32.529 [监控线程] DEBUG c.MonitorTest - 接受数据
11:31:33.532 [监控线程] DEBUG c.MonitorTest - 接受数据
11:31:34.026 [main] DEBUG c.Test - 执行监控线程终止操作
11:31:34.026 [监控线程] DEBUG c.MonitorTest - 重新打断
11:31:34.026 [监控线程] DEBUG c.MonitorTest - 料理后事(释放资源等操作)

2.利用停止标记

@Slf4j(topic = "c.MonitorTest2")
class MonitorTest2 {private Thread monitor;//使用停止标记,避免了在catch块中的操作//停止标记用 volatile 是为了保证该变量在多个线程之间的可见性//外部线程调用stop方法修改stop为true后,对监控线程保持可见private volatile boolean stop = false;public void start(){monitor = new Thread(() -> {while(true) {Thread current = Thread.currentThread();if(stop) {log.debug("料理后事(释放资源等操作)");break;}try {Thread.sleep(1000);log.debug(接受数据");} catch (InterruptedException e) {}// 执行监控操作}},"监控线程");monitor.start();}public void stop() {stop = true;monitor.interrupt();}
}
public static void main(String[] args) throws Exception{MonitorTest2 monitorTest2=new MonitorTest2();monitorTest2.start();Thread.sleep(2500);log.debug("执行监控线程终止操作");monitorTest2.stop();}
11:35:21.838 [监控线程] DEBUG c.MonitorTest2 - 接受数据
11:35:22.842 [监控线程] DEBUG c.MonitorTest2 - 接受数据
11:35:23.337 [main] DEBUG c.Test - 执行监控线程终止操作
11:35:23.337 [监控线程] DEBUG c.MonitorTest2 - 料理后事(释放资源等操作)
http://www.jmfq.cn/news/4781773.html

相关文章:

  • 内容电商网站有哪些/无锡seo公司哪家好
  • 两台电脑一台做服务器 网站/焊工培训ppt课件
  • 怎么在网上做彩票网站/百度云盘
  • 国外素材网站/关键路径
  • 昆山做网站的公司/天津网站优化软件
  • 电子商务网站建设推广分析/百度快照投诉中心
  • 淮安市住房和城乡建设局网站/深圳谷歌优化seo
  • 微信开发者平台登录/seo简单速排名软件
  • 专业电子科技网站建设/西安seo网站关键词优化
  • 做棋牌网站合法吗/网站查询网
  • 独立网站如何做/站长工具端口检测
  • 怎么制作网站半透明背景/竞价托管资讯
  • 汉台网站制作/百度app客服电话
  • 网站新闻百度收录/上海关键词seo
  • 一个网站开发需要多久/昆明网络推广公司排名
  • 在线登录qq聊天/文登seo排名
  • 做搜狗手机网站优化/网站建设公司是怎么找客户
  • 王稳庄网站建设/竞价代运营
  • 苏州网站建设最好/刷移动端seo软件
  • 怎样用hbuilder做网站/seo优化知识
  • 泉州制作网站公司/营销策略是什么
  • 网站排名优化怎么做/宁波seo服务
  • 赣州企业网站建设公司/品牌传播策划方案
  • 网络公关公司收费/百度seo优化网站
  • 比较国内外政府门户网站建设特点/小程序开发教程
  • 盐山县做网站/商品推广
  • 凡科建网站/网络营销模式有哪几种
  • 楚雄建网站/网站关键词优化的步骤和过程
  • 开发网站需要多少人/互联网广告销售
  • 太原免费自助建站模板/新闻联播今日新闻