A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 张禄宇 中级黑马   /  2013-6-13 16:45  /  1109 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文


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 异常
应该怎么写,求指教

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

2 个回复

倒序浏览
十字路口 来自手机 中级黑马 2013-6-14 00:20:36
沙发
亲,你在for循环里的线程启动的是运行一次后死亡的一个线程,而线程的生命周期已经结束了,也就是这个线程已经死亡了,你是不能重复启动已经死亡的线程的,这就是为什么你的两个线程只能执行一次的原因,后来就有了你说的异常,我这里学校断网了,用手机登的论坛,不能帮你该代码了,给你个建议吧,你可以在for循环里创建一个新的线程,然后启动它。希望你能明白。

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马