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
- }
- }
复制代码 |