读书人

java循环中执行多线程有关问题-怎么在

发布时间: 2011-12-19 23:23:36 作者: rapoo

java循环中执行多线程问题-如何在循环中等待一个线程结束后再自动开始新的线程
遇到一个很头疼的难题.执行一个线程,然后该线程里还有一个时间循环的线程(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()方法

读书人网 >J2SE开发

热点推荐