日期:2014-05-20  浏览次数:20825 次

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()方法