当前位置:首页
开发技术指南» 文章正文
    引言:
 

 

 ·想做个网站,要学些什么    »显示摘要«
    摘要: 偶想做个象样的网站,要有论坛等内容,我是用开c的,但未曾做个网页,先要学些什么,看什么书,大概要学多久? ......
 ·今天星级了, 人人有分.    »显示摘要«
    摘要: 来者有分! ......


再次线程

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()方法啊,我该怎么区分它们?哪位大侠再给我改改吧,谢谢!

NO.1   作者: fightboy

其实调用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  
   
  以上是个人看法,欢迎讨论  
 


 ·简单的小问题    »显示摘要«
    摘要: 我装了两个系统,xp和98.为什么在98下看不到光驱?xp和2000可以进dos吗? ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE