关于java TIme 线程具体调用以及释放

自己随手写了一套验证码系统,但是调用过程中线程无法释放,研究后正确代码:

/**
* 验证码系统
* */
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);

时间: 2024-10-09 07:12:38

关于java TIme 线程具体调用以及释放的相关文章

Java用户线程和守护线程

1.用户线程和守护线程的区别用户线程和守护线程都是线程,区别是Java虚拟机在所有用户线程dead后,程序就会结束.而不管是否还有守护线程还在运行,若守护线程还在运行,则会马上结束.很好理解,守护线程是用来辅助用户线程的,如公司的保安和员工,各司其职,当员工都离开后,保安自然下班了. 2.用户线程和守护线程的适用场景由两者的区别及dead时间点可知,守护线程不适合用于输入输出或计算等操作,因为用户线程执行完毕,程序就dead了,适用于辅助用户线程的场景,如JVM的垃圾回收,内存管理都是守护线程,

Java基础——线程总结

Java基础--线程总结 一.线程是什么? 线程:一个程序里不同的执行路径. 二.如何创建线程? 两种方法创建线程: 第一种 (1)定义具体功能类实现Runnable接口,可以多次调用而实现数据共享 (2)Thread myThread = new Thread(-)          //参数为Runnable接口类型 (3)Runnable中只有一个方法 public void run(){--} //用以定义线程运行体 第二种 (1)定义一个Thread的子类并重写run()方法 clas

java学习-线程

由于自己最近接手一个项目,构思过程中,线程可能会用的较多,所以今天翻出来把线程这块好好复习一下,以下是一点学习总结.分享写的比较拙略,只为自己笔记.为自己以后存储参考资源而已.  pass:(被重写的方法不能跑一个比父类更大的异常) 创建于一个继承thread的子类: 1 class testThread extends Thread{ 2 public void Run(){//新建一个线程里的run方法,实现此子线程需要完成的功能 3 for(int i = 0;i < 100;i++){

Java之线程,常用方法,线程同步,死锁

1, 线程的概念 进程与线程 进程:每个进程都有独立的代码和数据空间(进程上下文),进程间的切换会有较大的开销,一个进程包含1--n个线程.(进程是资源分配的最小单位) 线程:同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换开销小.(线程是cpu调度的最小单位) 切换而不是同步 一个程序中的方法有几条执行路径, 就有几个线程 Java中线程的生命周期 Java线程具有五中基本状态 新建状态(New):当线程对象对创建后,即进入了新建状态,如:Thread t =

Java并发编程:锁的释放

.title { text-align: center } .todo { font-family: monospace; color: red } .done { color: green } .tag { background-color: #eee; font-family: monospace; padding: 2px; font-size: 80%; font-weight: normal } .timestamp { color: #bebebe } .timestamp-kwd

Java 并发 线程同步

Java 并发 线程同步 @author ixenos 同步 1.异步线程本身包含了执行时需要的数据和方法,不需要外部提供的资源和方法,在执行时也不关心与其并发执行的其他线程的状态和行为 2.然而,大多数实际的多线程应用中,两个或两个以上的线程需要共享对同一数据的存取,这将产生同步问题(可见性和同步性的丢失) 比如两个线程同时执行指令account[to] += amount,这不是原子操作,可能被处理如下: a)将account[to]加载到寄存器 b)增加amount c)将结果写回acco

Java的线程安全

线程安全 我们这里讨论的线程安全,就限定于多个线程之间存在共享数据访问这个前提,因为如果一段代码根本不会与其他线程共享数据,那么从线程安全的角度来看,程序是串行执行还是多线程执行对它来说是完全没有区别的. 共享的数据 可以将Java语言中各种操作共享的数据分为以下5类:不可变.绝对线程安全.相对线程安全.线程兼容和线程对立. 不可变 不可变(Immutable)的对象一定是线程安全的,无论是对象的方法实现还是方法的调用者,都不需要再采取任何的线程安全保障措施,final关键字带来的可见性,只要一

Java多线程——线程同步

在之前,已经学习到了线程的创建和状态控制,但是每个线程之间几乎都没有什么太大的联系.可是有的时候,可能存在多个线程多同一个数据进行操作,这样,可能就会引用各种奇怪的问题.现在就来学习多线程对数据访问的控制吧. 由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题.Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问.   一.多线程引起的数据访问安全问题 下面看一个经典的问题,银行取钱的问题: 1).你有一张银行卡,里面有50

java 进程/线程

进程 OS并发的一个任务 CPU分时间片交替执行 宏观并行 微观串行 线程:在一个进程中并发的一个顺序执行流程 线程的组成: 1.数据 堆空间共享 栈空间独立 2.CPU 3.代码 Thread 线程对象 继承Thread类型 覆盖run方法 直接创建Thread对象 实现Runnable接口 实现run方法 先创建Runnable对象,再创建Thread对象 多线程共同访问同一个对象(临界资源),如果破坏了不可分割的操作(原子操作),就会发生数据不一致的情况 synchronized 同步 s