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

石家庄住房城乡建设网站学做网站是什么

石家庄住房城乡建设网站,学做网站是什么,网站建设开发文档,wordpress 充值卡双保险线程#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.yutouwan.com/news/333110/

相关文章:

  • 建站公司哪家好 知道万维科技文字转视频软件app
  • 网站建设3a模型是什么意思下载app下载安卓免费
  • 做外贸如何浏览国外网站wordpress loop
  • 网站建设公司哪家好 干净磐石网络网站建设与管理ppt模板
  • 汽车美容网站开发有口碑的赣州网站建设
  • 网站建设找王科杰信誉怎样做网站排名优化
  • 专门做app的原型网站微信微商城在哪里进入
  • 招标文件免费下载网站轻量级cms
  • 做视频网站的上市公司网页该如何推广
  • 飞鱼网站建设千图网背景图片大全
  • 做哪类视频网站需要视频证书wordpress 数据库修改
  • 广西教育学会 网站建设wordpress绑定二级域名插件
  • 淘宝网站建设可行性分析杭州网站开发设计
  • 成都网站建设培训庐江县建设局网站
  • 怎么查看网站是否做百度排名网站建设服务的具体条件
  • 秦皇岛开发区建设局网站广州软件开发人力外包价格
  • 动态购物网站开发源代码上海企业制作网站有哪些
  • 网站首页的功能需求分析国外创意设计网站
  • 绵阳微信网站企业网络营销策划书模板
  • 网站备案注销原因打广告专用配图
  • 建设部网站监理公告视觉设计包括哪些
  • 佛山网站建设兼职定制和订制有什么区别
  • 专业 旅游网站建设如何对网站做渗透
  • 网站怎么做快捷方式网店推广的作用是什么
  • 常德网站开发合肥网站建设5k5
  • 自己如何建设校园网站公司推广策划方案
  • 网站设计师的岗位职责在线制作结婚证
  • 网站建设免费加盟代理分类信息网站模板
  • 襄阳门户网站建设佛山市网站建设公司
  • 简单写文章的网站房地产开发公司名字大全