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

网站是如何建立的建材 东莞网站建设

网站是如何建立的,建材 东莞网站建设,物联网应用有哪些,安庆市建设局网站首页双保险线程#xff0c;每次启动2个相同的线程#xff0c;互相检测#xff0c;避免线程死锁造成影响。两个线程都运行#xff0c;但只有一个线程执行业务#xff0c;但都会检测对方的时间戳 如果时间戳超过休眠时间3倍没有更新的话#xff0c;则重新启动对方线程。例子每次启动2个相同的线程互相检测避免线程死锁造成影响。两个线程都运行但只有一个线程执行业务但都会检测对方的时间戳 如果时间戳超过休眠时间3倍没有更新的话则重新启动对方线程。例子一般工作线程由自己实现继承DoubleInsuredThead在run2()方法里实现具体需求和一般线程的run()方法不同run2()里不用处理循环和休眠 检测线程已经由CheckThread实现可以直接使用如启动用户检测线程。public static void startMonitor() {System.out.println(启动用户会话检测线程);UserMonitor worker new UserMonitor(WT-UserMonitor);CheckThread checker new CheckThread(WT-UserMonitorCheck,userMonitorIntevalTime);DoubleInsuredThead.startDoubleInsuredThead(worker,checker);}完整代码package com.yx.demo.thread;/*** DoubleInsuredThead* 双保险线程每次启动2个相同的线程互相检测避免线程死锁造成影响。* * 两个线程都运行但只有一个线程执行业务但都会检测对方的时间戳 如果时间戳超过休眠时间3倍没有更新的话则重新启动对方线程* * 代码例子* 一般工作线程由自己实现继承DoubleInsuredThead在run2()方法里实现具体需求和一般线程的run()方法不同run2()* 里不用处理循环和休眠 检测线程已经由CheckThread实现可以直接使用** * 启动用户检测线程* public static void startMonitor() {* System.out.println(启动用户会话检测线程);* UserMonitor worker new UserMonitor(XX-UserMonitor);* CheckThread checker new CheckThread(XX-UserMonitorCheck,userMonitorIntevalTime);* DoubleInsuredThead.startDoubleInsuredThead(worker,checker);* }* ** author yx* date 2019/12/21 0:36*/public abstract class DoubleInsuredThead extends Thread {/*** 默认线程休眠时间为1000毫秒*/public static final long DEFAULT_SLEEP_TIME 1000;/*** 是否运行本线程*/private boolean running true;/*** 线程时间戳每次run的时候更新*/private long timeStamp System.currentTimeMillis();/*** 互相检测的另外一个线程*/DoubleInsuredThead another;public DoubleInsuredThead(String name) {super(name);}/*** 子线程的执行业务的方法相当于Runnable.run()方法*/public abstract void run2();/*** 获得实例重启线程的时候用** return*/public abstract DoubleInsuredThead newInstance();/*** 启动工作线程使用默认检测线程** param workerThread*/public static void startDoubleInsuredThead(DoubleInsuredThead workerThread) {CheckThread checkerThread new CheckThread(workerThread.getName() -checker,workerThread.getSleepTime());workerThread.another checkerThread;checkerThread.another workerThread;workerThread.start();checkerThread.start();}/*** 自定义检测线程的方式启动工作线程建议使用startDoubleInsuredThead(DoubleInsuredThead workerThread)** param worker 工作线程* param checker 检测线程* deprecated*/public static void startDoubleInsuredThead(DoubleInsuredThead worker,DoubleInsuredThead checker) {worker.another checker;checker.another worker;worker.start();checker.start();}/*** 重启线程*/public void restart() {System.out.println(线程\ getName() \重新启动了);// 停止当前线程running false;// 启动新线程DoubleInsuredThead t newInstance();t.setTimeStamp(System.currentTimeMillis());another.another t;t.another another;t.start();}Overridepublic void run() {while (running) {// 执行子类线程的业务run2();checkAnother();setTimeStamp(System.currentTimeMillis());try {Thread.sleep(getSleepTime());} catch (InterruptedException e) {e.printStackTrace();System.out.println(线程休眠出错 e.getMessage());}}}/*** 获得线程休眠的时间单位毫秒** return*/public long getSleepTime() {return DEFAULT_SLEEP_TIME;}/*** 对另外一个线程进行检测*/private void checkAnother() {if (another.isTimeout()) {another.restart();}}/*** 是否更新时间戳超时** return*/private boolean isTimeout() {System.out.println(timeStamp getTimeStamp());return System.currentTimeMillis() - getTimeStamp() getSleepTime() * 3;}/*** param timeStamp the timeStamp to set*/public void setTimeStamp(long timeStamp) {this.timeStamp timeStamp;}/*** return the timeStamp*/public long getTimeStamp() {return timeStamp;}}检测线程package com.yx.demo.thread;/*** CheckThread* 双保险线程里专门用来检测的线程** author yx* date 2019/12/21 0:38*/public class CheckThread extends DoubleInsuredThead {/*** 检测休眠时间默认1秒*/private long checkIntevalTime 1000;public CheckThread(String name,long checkTime) {super(name);this.checkIntevalTime checkTime;}Overridepublic DoubleInsuredThead newInstance() {return new CheckThread(getName(),checkIntevalTime);}Overridepublic void run2() {// 只打印信息System.out.println(线程 getName() 完成了工作);}Overridepublic long getSleepTime() {return checkIntevalTime;}/*** 测试代码** param args*/public static void main(String[] args) {CheckThread worker new CheckThread(worker,3000);DoubleInsuredThead.startDoubleInsuredThead(worker);}}以上就是本文的全部内容希望对大家的学习有所帮助也希望大家多多支持我们。相关文章总结以上是编程之家为你收集整理的Java实现双保险线程的示例代码全部内容希望文章能够帮你解决Java实现双保险线程的示例代码所遇到的程序开发问题。如果觉得编程之家网站内容还不错欢迎将编程之家网站推荐给程序员好友。本图文内容来源于网友网络收集整理提供作为学习参考使用版权属于原作者。如您喜欢交流学习经验点击链接加入交流1群1065694478(已满)交流2群163560250
http://www.pierceye.com/news/907103/

相关文章:

  • dw怎样做网站链接aspcms建站
  • 网站的栏目wordpress php版本太低
  • 浙江网站制作出效果图
  • 电子商务是电商吗产品seo是什么意思
  • 黑龙江省建设工程质量协会网站中文搜索引擎网站
  • 汽车报价网站宁波网络推广丿易企网怎么样
  • php个人网站简洁手机下载视频网站模板
  • 双语网站方法wordpress分类内没有文章
  • 做网站后期为什么续费仿uehtml WordPress
  • 网站实时显示wordpress 网站
  • 重庆电子网站建设ashx做网站
  • 河南双师培训网站html 路径 网站根路径
  • 专业定制网站企业如何注册公司营业执照
  • 福泉市自己的网站某个产品营销推广方案
  • 金坛市建设局网站微信网站有什么作用
  • 设计建网站今天的最新消息新闻
  • 电商行业建设网站ui网页设计培训学校
  • fineui 如何做网站私密浏览器免费版片视频动漫
  • 产地证是在哪个网站上做一起做网店下载安装
  • 舞钢市城乡建设局网站阿里巴巴网站谁做的
  • 巴彦淖尔市网站制作网站不收录怎么解决
  • 站群源码长春建设网站公司哪家好
  • 石家庄网站建设雨点牛wordpress qq登录免费
  • 有网站如何做淘宝客荆门市城乡建设管理局网站
  • 综合性门户网站列举如何拥有自己的微信小程序
  • 我图网类网站建设做外贸哪个网站最好
  • 做网站后台运营这个工作怎么样成都网络推广哪家好
  • angularjs做的网站有哪些wordpress 文章
  • 全国网站建设公司排名wordpress功能强大的主题
  • 做网站用c 还是php番禺制作网站平台