📄 sendreqthread30.java
字号:
package demo.cmppdemo30;
import java.util.Date;
/**
* Title: 短信网关
* Description: 提供通过中国移动短信协议CMPP收发短信的能力。
* Copyright: 版权所有:华为技术有限公司/Copyright (c) 2001 HUAWEI TECHNOLOGIES CO. LTD.
* Company: 华为技术有限公司
* @author
* @version 1.0
*/
public class SendReqThread30 extends Thread {
/** 该线程存活标志,kill()方法将该标志置为false。*/
private boolean alive = true;
/** 该类的所有子类对象均创建到这个线程组中。*/
public static final ThreadGroup tg = new ThreadGroup("Req-thread");
/** Demo的对象*/
private Demo30 myDemo = null;
/**线程执行的任务的运行长度,单位是毫秒*/
private long timeLong=0;
private int sleepInterval = 0;
private boolean IsSleep = false;
/**
* 构造函数,提供一个线程名参数。构造方法只创建线程,并不启动。
* @param name 线程的名字,为线程起个好名字对调试和日志记录很有帮助。
* @param demo 使用的Demo的对象,所有的线程只使用一个demo
*/
public SendReqThread30(String name,Demo30 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 + -