遇到一个很头疼的难题.执行一个线程,然后该线程里还有一个时间循环的线程(timertask()).我想让时间循环线程每5分钟循环一次,执行两次后就cancel()掉这个timer.然后再重新调用一个新的timer.我现在把该timer线程放入一个while循环中.但执行以后,循环就会同步执行无限个该timer线程,以至内存溢出出错. 有没有什么方法能让这个while循环启动一次timer以后就暂停,直到该timer线程cancel()掉以后,再自动new一个新的timer线程呢?望大侠们指定.我整理的代码如下.那个线程组的代码可以忽略,就理解成开始一个线程就行.
public class Test1{
public static Vector task_counter_t=new Vector();
public static Vector task_counter_r=new Vector();
public static void main(String[] args) {
task_counter_r.insertElementAt(new Main1(),1);
task_counter_t.addElement(new Thread( (Runnable)task_counter_r.elementAt(1)));
((Thread) task_counter_t.elementAt(1)).start();
}
}
class Main1 implements Runnable {
public static boolean go1=true;
public static int tim1=1;
public void run(){
final Timer timera = new Timer()
while(go1){
timera.schedule(new TimerTask() {
public void run() {
tim1++;
if(tim1==4){
tim1=1;
timera.cancel();
}
else {
System.out.printl( "执行一次 ");
}
}, 0,5*1000*60
}
}
------解决方案--------------------
用同步锁来判断
------解决方案--------------------
notify()在同步块中调用
------解决方案--------------------
Thread的join()方法