自己随手写了一套验证码系统,但是调用过程中线程无法释放,研究后正确代码:
/**
* 验证码系统
* */
public class Diyyzm extends TimerTask {
private static Timer _timer = new Timer(); // 首先初始化一个Timer对象
// 初始化变量
public static String _result;
public static int _i= 0;
public static L2PcInstance _player;
// 用来判断是否运行线程
public static boolean isRun = true;
// 调用关闭线程
public void stopme() {
cancel(); // 终止线程
System.gc(); // 释放内存
}
// 开始线程计时器
public void startme() {
_timer.scheduleAtFixedRate(new Diyyzm(), 0, 1000);
}
public void run() {
while (isRun) {
_i++;
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
if(_i >= 5 ){ // 超时5秒后自动kill
isRun = false; // 关闭开关
stopme();// 终止线程
}
}
}
}
// 验证码系统 每次调用初始化一下系统变量。
Diyyzm yzm = new Diyyzm();
yzm.isRun = true; // 初始化变量
yzm._i = 0; // 初始化变量
yzm.sanyzm(activeChar);