public class BaseThread extends Thread{private final static Logger logger = Logger.getLogger(BaseThread.class);/*** isDead:是否杀死线程*/private boolean isDead = false;/*** isStop:是否停止*/private boolean isStop = false;/*** isRun:是否已开始执行*/private boolean isRun = false;/*** isWait:是否处于等待*/private boolean isSleep = false;public BaseThread() {super();this.setDaemon(false);//设置为非守护线程logger.info("线程:["+this.getId()+"] 被创建");}public BaseThread(String threadName) {super(threadName);this.setDaemon(false);//设置为非守护线程logger.info("线程:["+threadName+"-"+this.getId()+"] 被创建");}/***<p>Title: run</p>*<p>Description:JDK线程类自带方法</p>* @param @return 设定文件* @return  boolean 返回类型* @throws*/public void run() {this.isRun = true;while(!isDead){while(true){if(!isStop){if(preConditions())execute();}else{break;}sleep(256);//缓解CPU压力,即唤醒线程需要至多256ms}}isRun = false;logger.info("线程:[" + this.getName() +"-"+this.getId()+ "] 消亡");}/***<p>Title: preConditions</p>*<p>Description:执行体前置条件</p>* @param @return 设定文件* @return  boolean 返回类型* @throws*/protected boolean preConditions(){return true;}/***<p>Title: execute</p>*<p>Description:线程执行体</p>* @param  设定文件* @return  void 返回类型* @throws*/protected void execute(){}/***<p>Title: kill</p>*<p>Description:结束线程</p>* @param  设定文件* @return  void 返回类型* @throws*/public void kill(){this.isStop = true;this.isDead = true;this.isRun = false;logger.info("线程:["+this.getName()+"-"+this.getId()+"] 被终止");}/***<p>Title: halt</p>*<p>Description:暂停进程,非休眠</p>* @param  设定文件* @return  void 返回类型* @throws*/public void halt(){this.isStop = true;logger.info("线程:["+this.getName()+"-"+this.getId()+"] 被暂停");}/***<p>Title: reStart</p>*<p>Description:重新执行线程</p>* @param  设定文件* @return  void 返回类型* @throws*/public void reStart(){this.isStop = false;logger.info("线程:["+this.getName()+"-"+this.getId()+"] 被重新执行");}/***<p>Title: isRun</p>*<p>Description:是否处于执行态</p>* @param @return 设定文件* @return  boolean 返回类型* @throws*/public boolean isRun() {return isRun;}/***<p>Title: isSleep</p>*<p>Description:是否处于休眠态</p>* @param @return 设定文件* @return  boolean 返回类型* @throws*/public boolean isSleep() {return isSleep;}public boolean isDead(){return isDead;}/***<p>Title: sleep</p>*<p>Description:休眠线程</p>* @param @param millis* @param @throws InterruptedException 设定文件* @return  void 返回类型* @throws*/public void sleep(int millis){isSleep = true;try {Thread.sleep(millis);this.sleepTime += millis;if(notifyPreConditions())notifyObs();} catch (InterruptedException e) {e.printStackTrace();}isSleep = false;}

让线程实现暂停,重新启动,停止相关推荐

  1. Qt之线程的开始暂停恢复停止

    一.前言 软件开发中,使用到线程就不可避免的要实现线程的暂停恢复停止等操作,总不可能说线程一旦启动就直接运行到结束了,中途不能停止啥的.线程的开始以及结束都比较简单,都有对应的接口可以调用,线程的暂停 ...

  2. C++ :线程的暂停、恢复和停止

    转载:C++11: 线程的暂停和继续和停止_hai7song的专栏-CSDN博客_c++ 线程暂停 重点: 通过设置一个类,类里面加入线程,然后采用标志位来控线程的暂停.恢复和停止. 有点意思! #i ...

  3. 【探索】停止线程和暂停线程

    停止线程和暂停线程 停止一个线程意味着在线程处理完任务之前停止正在做的操作,也就是放弃当前的操作,虽然看起来非常简单,但是要做好防范措施. 停止线程的方法 1. 方法1:使用Thread.stop() ...

  4. (六)多线程说学逗唱:线程的暂停与其优先级

    (一)多线程说学逗唱:关于线程那不得不说的二三事 (二)多线程说学逗唱:新手村偶遇Thread类 (三)多线程说学逗唱:村口的老R头是个扫地僧(Runnable) (四)多线程说学逗唱:线程险恶,变量 ...

  5. java 线程强制停止线程_java多线程之停止线程

    在多线程开发中停止线程是非常重要的技术点. 停止线程在Java语言中并不像break语句那样干脆.须要一些技巧性的处理. 一.  异常法 採用异常法来停止一个线程.首先我们须要了解一下两个方法的使用方 ...

  6. HTML5如何控制暂停播放停止

    本篇教程探讨了HTML5如何控制暂停播放停止,希望阅读本篇文章以后大家有所收获,帮助大家HTML5+CSS3从入门到精通 . <!DOCTYPE HTML> <html> &l ...

  7. C#线程实现暂停与继续

    C#线程暂停与继续解决方案 原帖地址:http://blog.csdn.net/xiaohui_hubei/article/details/7494553 昨天, 老师要我们每个人交一个关于黑客方面的 ...

  8. 安卓动画开始,暂停和停止

    android 在3.0之前经常使用的tween animation在网上已经有人实现了动画的暂停效果,但是对于property animation的暂停尚未实现,由于项目需要,我将属性动画的暂停.停 ...

  9. Chronometer实现计时器 开始、暂停、停止功能

    需要实现一个计时器功能,包含开始.暂停.停止的功能,且开始和暂停是一个控件,至于为啥,设计就是这样的,木有办法. 首先想到的是Chronometer,那就用它吧,直接老规矩上代码,方便以后复制粘贴 页 ...

  10. android开发——分秒计时器(可 开始/暂停/继续/停止)

    最近在项目开发过程中,由于需要设计一个计时器的功能.所以在这里分享一个TimeUtils.可以实现 暂停/继续 的计时器: 话不多说,先看一下TimeUtils这个工具类: package cn.co ...

最新文章

  1. Guava包学习--EventBus
  2. 中国半导体最强助攻来了!十年免税、上下游一揽子扶持,明确「集成电路」为一级学科...
  3. Qt自定义对话框中边框阴影实现
  4. 【转】阿里技术专家详解 DDD 系列 第一讲- Domain Primitive
  5. C++ deque
  6. 为什么摩根大通「发币」标志着企业区块链应用元年?
  7. 使用powershell命令,为exchange 2007用户配置邮箱数据
  8. 方差分析软件_Minitab统计软件入门(一)
  9. Elasticsearch 磁盘使用率超过警戒水位线,怎么办?
  10. win10杜比全景声评测_Win10安装杜比全景声音效教程
  11. 安装R软件(R、studio)的安装包下载官网和教程
  12. Java调用dll文件
  13. Attention中的Q、K、V
  14. 能编程100行的c语言题目,C语言编程100题
  15. 知了 | 基于NLP的智能问答推荐系统
  16. 全球及中国纺织机械行业运营规划与十四五投资状况分析报告2022版
  17. ffmpeg设置视频 tbr、tbn、tbc
  18. 2021年四川高考成绩等位分查询,2021年四川高考成绩查询网站查分网址:https://www.sceea.cn/...
  19. HTML外边框塌陷什么意思,html如何解决高度塌陷问题
  20. RocketMQ 分布式事务消息过程分析

热门文章

  1. Matlab从细胞型转换为矩阵From cell to matrix
  2. 陀螺仪程序---可直接用
  3. 绿色智慧档案馆构想之智慧档案馆环境综合管控一体化平台
  4. 点心云pcdn跑不起来解决办法(不起量)
  5. Android中Finish和OnBackPressed、OnDestroy的区别
  6. python音频频谱_Python 读取WAV音频文件 画频谱的实例
  7. 垃圾回收只知道标记清除?一文帮你打通V8垃圾回收
  8. Web服务小试——天气预报
  9. 简述API HOOK技术及原理
  10. windows程序设计作业