黑马程序员技术交流社区
标题:
关于run()和start()的问题
[打印本页]
作者:
ruibocool
时间:
2015-5-6 01:14
标题:
关于run()和start()的问题
当一个新建的线程调用了run()后,再调用start(),会不会出错啊
作者:
ruibocool
时间:
2015-5-6 01:17
我看过某本教材说,调用run()后,线程就不处于新建状态了,在调用start()会出异常
作者:
ruibocool
时间:
2015-5-6 01:21
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();
}
}
}
}
作者:
1017161726
时间:
2015-5-6 08:49
直接调用run是主线程里运行,调用start是新开线程再运行,应该不出错。
作者:
csu050416
时间:
2015-5-6 09:26
FirstThread t1=new FirstThread();
//new FirstThread().start();
//Thread.sleep(1);
t1.run();
t1.start();
t1.isAlive();
你的程序先调用run()的话,新线程没有启动,你只是将run()方法调用了,这样会先运行run(),结束后执行start()方法,这时才有两个线程运行。
作者:
木头人之死
时间:
2015-5-6 09:27
直接调用run是主线程里运行,调用start是新开线程再运行,应该不出错。
作者:
csu050416
时间:
2015-5-6 09:29
/*
创建线程的第一种方式:继承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);
}
}
这个程序类似你的。
作者:
guoyangpeng
时间:
2015-5-6 09:37
学习了,赞一个
作者:
guoyangpeng
时间:
2015-5-6 10:12
谢谢分享,学习了!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2