请解释一下有关线程的这个问题! 启动线程应该用start你直接调用run,其实和调用一个普通类的方法没什么区别,因为你的程序很短,run很快结束了。如果run的时间比较长,甚至是无限循环的话,你用start和run差别就很大了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 另外如果把上面的run()都换成start(),运行结果虽一样,但跟上面的有什么不同?public class Runt extends Thread{public static void main(String argv[]){ Runt r = new Runt(); r.start(); } public void start(){ for(int i=0;i<100;i++) System.out.println(i); }}是不是用start()的才真正起了线程? start是启动一个线程,然后在里面运行run,你的是在当前线程执行run。多线程是用start来实现的。 谢谢 chenyuan_tongji(codeguru) :你的意思是线程调start()方法比用一般的类方法效率上要快,但start()其实不也是去调run()吗?不太明白具体的原理机制,能否详细解释,再次感谢! run并没有起一个线程,也就是说你调用run,那java并未新增一个线程来处理你的run里面的事件,用start的话,java就新增了一个线程来处理是我的理解 >你的意思是线程调start()方法比用一般的类方法效率上要快,但start()其>实不也是去调run()吗?我不是那个意思start()不会去调用run(),一个thread的run()是由jvm调用的。start()的作用是表明这个thread现在开始处于ready状态,jvm可以调用这个thread上台,占用cpu执行其run里面的东西。不要手工去调用run() 直接调用run()方法是在程序主线程main()中运行run()方法,而start则是新建一个线程r,在r线程里运行run()方法,所占用的cpu时间有很大的差别。 100分求助,哪位大哥能帮忙讲解通了,我再申请几个号给他加分都行 救命:tomcat reload web app的事 【求助】有关BufferesStream流中 读写是否需要刷新缓冲区的问题 求助,新手被一题卡住了 请问什么叫类的引用? 听说有把其他语言编译为*.class的编译器? Byte类型怎么定义? 如何实现java程序的并行化 如何检测socket状态来加以释放 如何输出所有的ASCII码或Unicode字符?如何得到a,b等的ASCII码或Unicode? 关于 return this 文件阅读的中文问题
public class Runt extends Thread{
public static void main(String argv[]){
Runt r = new Runt();
r.start();
}
public void start(){
for(int i=0;i<100;i++)
System.out.println(i);
}
}
是不是用start()的才真正起了线程?
你的意思是线程调start()方法比用一般的类方法效率上要快,但start()其实不也是去调run()吗?
不太明白具体的原理机制,能否详细解释,再次感谢!
>实不也是去调run()吗?
我不是那个意思
start()不会去调用run(),一个thread的run()是由jvm调用的。start()的作用是表明这个thread现在开始处于ready状态,jvm可以调用这个thread上台,占用cpu执行其run里面的东西。
不要手工去调用run()