📄 sendreqthread.java
字号:
package demo.cngpdemo;import java.util.Date;/** * Title: 短信网关 * Description: 提供通过中国移动短信协议CMPP收发短信的能力。 * Copyright: 版权所有:华为技术有限公司/Copyright (c) 2001 HUAWEI TECHNOLOGIES CO. LTD. * Company: 华为技术有限公司 * @author * @version 1.0 */public class SendReqThread extends Thread { /** 该线程存活标志,kill()方法将该标志置为false。*/ private boolean alive = true; /** 该类的所有子类对象均创建到这个线程组中。*/ public static final ThreadGroup tg = new ThreadGroup("Req-thread"); /** Demo的对象*/ private MyCngpDemo myDemo = null; /**线程执行的任务的运行长度,单位是毫秒*/ private long timeLong=0; private int sleepInterval = 0; private boolean IsSleep = false; /** * 构造函数,提供一个线程名参数。构造方法只创建线程,并不启动。 * @param name 线程的名字,为线程起个好名字对调试和日志记录很有帮助。 * @param demo 使用的Demo的对象,所有的线程只使用一个demo */ public SendReqThread(String name,MyCngpDemo demo,int timelong,int sleepinterval) { super(tg,name); setDaemon(true); //设置成精灵线程(程序在只剩下精灵线程运行时将自动结束) myDemo = demo; timeLong = timelong*60*1000; if(sleepInterval!=0) { sleepInterval = sleepinterval*1000; IsSleep = true; } } /** * 线程主体,循环运行task()方法,直到调用了kill()方法。 */ public final void run() { //生成线程开始执行的时间 long beginTime = new Date().getTime(); while (alive) { try { myDemo.Task(); if(IsSleep) { sleep(sleepInterval); } //判断是否超出线程任务执行的时间长度 if(new Date().getTime() - beginTime >= timeLong) { //Exit Thread; break; } } catch (Exception ex) { ex.printStackTrace(); break; } catch (Throwable t) { t.printStackTrace(); break; } } } /**杀死该线程*/ public void Kill() { alive = false; }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -