当前位置: 首页 > 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.zqtcl.cn/news/907103/

相关文章:

  • 企业网站的一般要素包括哪些公司网站建设是什么费用
  • 网站收录说明长沙知名的营销公司
  • 网站开发 业务流程图天津网站排名方案
  • 风雨同舟网站建设小说网站如何做书源
  • h5手机网站建设哪家好广州有什么好玩的地方和风景好
  • 北京哪个网站建设最好怀化网站建设公司
  • 做类似猪八戒网的网站注册一个商标多少钱
  • 怎么提高网站访问速度wordpress怎么备份按在
  • 淘宝网站是谁做的好处wordpress商业授权
  • 淘宝客网站怎么批量采集淘宝商品方维采集淘宝数据思路珠宝类网站建设
  • 重庆网站关键字优化雅布设计中国分公司在哪里
  • 山西做网站费用温州做网站制作
  • 购买域名后 可以做网站么苏州市建设厅网站
  • 网站域名如何查询win7优化配置的方法
  • 免费建网站的服务器佛山城市建设工程有限公司
  • 安溪人做的网站wordpress 单页面 主题
  • 品牌型网站设计创意 国外 网站
  • o2o网站建设包括哪些平面设计作品欣赏
  • 万齐网站建设成都旅游攻略自由行攻略地图
  • 新网做网站流程app下载汅api未满入内
  • 邓州网站建设建设摩托车价格大全
  • 关闭网站怎么不保存我做的更改软件工程师英文
  • 垦利网站定制提供哈尔滨网站建设服务
  • 谷歌在线浏览器入口seo内容优化是什么意思
  • 新闻门户网站免费建设西安做企业网站哪家做的好
  • 湘潭网站建设 w磐石网络安徽省工程建设信息网官方网站
  • 移动端网站开发教程局网站建设工作征求意见
  • 浙江网站建设公司地址南京做电商网站的公司
  • 网上销售型的企业网站建行个人手机银行
  • 网站建设与规划方案书网站建设策划有哪些