当前位置:  技术问答>java相关

再次请教线程!

    来源: 互联网  发布时间:2015-06-18

    本文导语:  import java.io.*; public class MyThread implements Runnable{ public void run(){ System.out.println("hello"); } public static void main(String args[]) { try{ Thread thread = new Thread("hello"); thread.run(); } catch(Exception e){ System.out.prin...

import java.io.*;

public class MyThread implements Runnable{

public void run(){
System.out.println("hello");
}

public static void main(String args[]) {
try{
Thread thread = new Thread("hello");
thread.run();
}
catch(Exception e){
System.out.println(e.toString());
}
}
}

为什么没有输出?

这是我刚刚提问的,已经解决。现在的问题是:

我要在main里生成两个线程或以上,它就一个run()方法啊,我该怎么区分它们?哪位大侠再给我改改吧,谢谢!

|
其实调用start和run是完全不同的
我认为 
    调用run的话就相当于直接在main线程里头调用一个很一般的method,和其它语句没有什么两样,等到这条语句调用结束之后接着调用下一条语句,是顺序执行的,并且都在main线程里头。

但是
    如果调用start就不同了,他是thread的一个独特的方法,JVM会把这个线程直接放到准备就绪的线程队列中,让操作系统去调度它,然后返回了。这样,才是真正的多线程。
    而操作系统调度到了这个线程,就会主动去执行它的run方法。当然,问题的关键是操作系统什么时候去调度它,这个和各个不同操作系统的线程调度策略有关了,和java没有什么关系(不过你还是可以为每个线程设定优先级的)。
    因此我们可以认为,在这种情况下,thread1和thread2的run方法的调用顺序和结束顺序是不可知的。(当然,除非你使用了线程的同步方法)

    通过和第一中情况比较我们可以画出他们的运行关系图


A:
    in main thread
      -> thread1.run start-->thread1.run over-->thread2.run start->thread2.run over--> go on other after these code


B:
    in main thread
      ->send thread1 to thread queue->send thread2->go on other after these code
    in thread1 thread
      -> thread1.run start-->thread1.run over
    in thread2 thread
      -> thread2.run start-->thread2.run over

以上是个人看法,欢迎讨论

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 进过一次WIN,再次进入LINUX就有问题
  • 高手帮帮忙!!! 在线等!!outlook的附件修改且保存后,再次打开发现是修改之前的原件
  • 程序异常之后需要等待x秒才可以再次启动监听端口?
  • Ubuntu 卸载后再次安装软件包出问题了
  • cron里配置的任务在每次cron再次调用前 会自动杀掉么?
  • 为什么我卸载一个模块后再次加载会不成功呢,dmesg里是 Unknown parameter `1'
  • worldheart,资料已收到,再次感谢
  • qianyuting(钱),关于Java的问题的解答,来领分,再次感谢!!!
  • 再次提问。别老是不理我了
  • 菜鸟再次提问!!!
  • Linux8.0 修改字符集后,再次进系统,无图形界面问题。。。求救。。
  • 再次向万能的CSDN BBS求救:我的Linux内核升级之后网卡激活不了啊
  • 网络再次连上了!!!!!!!!
  • 再次发帖,懂libcurl的进
  • 如何才能再次进入linux?
  • 关于SUN考试券,再再次散分
  • 再次散分支持linux类别,前十名拿分
  • 再次求助,如何重绘,急
  • 急啊,怎样在一个jsp文件里保存connection,使得下一个网页不用再次打开数据库
  • SourceForge再次被封!


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3