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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© ruibocool 中级黑马   /  2015-5-6 01:14  /  846 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当一个新建的线程调用了run()后,再调用start(),会不会出错啊

8 个回复

正序浏览
guoyangpeng 来自手机 中级黑马 2015-5-6 10:12:30
9#
谢谢分享,学习了!
回复 使用道具 举报
guoyangpeng 来自手机 中级黑马 2015-5-6 09:37:08
8#
学习了,赞一个
回复 使用道具 举报
/*
创建线程的第一种方式:继承Thread类.
*/
class Demo extends Thread
{
        public void run()//覆写父类run()方法。
        {
                for(int x=0; x<10; x++)
                        System.out.println("Demo run----"+x);
        }
}
class ThreadDemo
{
        public static void main(String[] args)
        {
                Demo d = new Demo();//创建好一个线程。d.start()才运行。
                d.run();
                d.start();//执行start(),调用run()。不能直接写d.run(),不然先运行run,完了之后才切换。
                for(int x=0; x<10; x++)
                        System.out.println("Hello World----"+x);
        }
}
这个程序类似你的。
回复 使用道具 举报 1 0

直接调用run是主线程里运行,调用start是新开线程再运行,应该不出错。
回复 使用道具 举报
FirstThread t1=new FirstThread();
//new FirstThread().start();
//Thread.sleep(1);
t1.run();
t1.start();
t1.isAlive();
你的程序先调用run()的话,新线程没有启动,你只是将run()方法调用了,这样会先运行run(),结束后执行start()方法,这时才有两个线程运行。

                        



回复 使用道具 举报
直接调用run是主线程里运行,调用start是新开线程再运行,应该不出错。
回复 使用道具 举报
public class FirstThread extends Thread{
        private int i;
        public void run()
        {
                for(;i<100;i++){
                        System.out.println(this.getName()+" "+i);
                }
        }
        public static void main(String[] args) throws Exception {
                // TODO Auto-generated method stub
                for(int i=0;i<100;i++){
                        System.out.println(Thread.currentThread().getName()+" "+i);
                        if(i==20){
                                FirstThread t1=new FirstThread();
                                //new FirstThread().start();
                                //Thread.sleep(1);
                                t1.run();
                                t1.start();
                                t1.isAlive();
                        }
                       
                }
        }

}
回复 使用道具 举报
我看过某本教材说,调用run()后,线程就不处于新建状态了,在调用start()会出异常
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马