黑马程序员技术交流社区

标题: 如何在不同的条件下 启动不同的线程 [打印本页]

作者: 张禄宇    时间: 2013-6-13 16:45
标题: 如何在不同的条件下 启动不同的线程

public class RabbitAndTorbit {
        /**
         * @param args
         * @throws InterruptedException
         */
        public static void main(String[] args) throws InterruptedException {
                // TODO Auto-generated method stub
                Rabbit rabbit=new Rabbit();
                Torbit torbit=new Torbit();
                Thread trTorbit=new Thread(torbit);
                Thread trRabbit=new Thread(rabbit);
                for(int i=0;i<10;i++){
                if(i%2==0){
                        trRabbit.start();
                }
                else{
                        trTorbit.join();
                }
               
                System.out.println("第"+(i+1)+"回合");
                }
        }

}
class Rabbit implements Runnable{
        @Override
        public void run() {
                int i=0;
                // TODO Auto-generated method stub
                while( i<6){
                System.out.println("Rabbit is in the lead!!!! ");
                i++;
                }
                i=0;
        }
       
}
class Torbit implements Runnable{
        @Override
        public void run() {
                int i=0;
                // TODO Auto-generated method stub
                while(i<6){
                       
                        System.out.println("Torbit is in thd lead!!!");
                        i++;
                }
                i=0;
               
               
        }
}
上面是代码   抛出IllegalThreadStateException 异常
应该怎么写,求指教
作者: 十字路口    时间: 2013-6-14 00:20
亲,你在for循环里的线程启动的是运行一次后死亡的一个线程,而线程的生命周期已经结束了,也就是这个线程已经死亡了,你是不能重复启动已经死亡的线程的,这就是为什么你的两个线程只能执行一次的原因,后来就有了你说的异常,我这里学校断网了,用手机登的论坛,不能帮你该代码了,给你个建议吧,你可以在for循环里创建一个新的线程,然后启动它。希望你能明白。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2