while(true){
}
while(true){   //这段永远不会执行, 编译器可以检测出来, 编译会通不过.
}第2个是在不同的函数中.

解决方案 »

  1.   

    楼主,我把你代码中的while(true)该为for(int n =0 ; n < 10 ;n++)两段程序都运行正常
    第一段:
    class thread1
    {
    public static void main(String args[])
    {
    new thread1().run();
    for(int n =0 ; n < 10 ;n++)
    {
    System.out.println("测试run方法的测试情况");
    }
    for(int n =0 ; n < 10 ;n++)
    {
    System.out.println("线程测试");
    }
    System.out.println("不知这句是否还会执行");
    }
    public void run()
    {
    for(int n =0 ; n < 10 ;n++)
    {
    System.out.println("测试run方法的测试情况");
    }
    }

    }第二段:class thread2 
    {
    public static void main(String args[])
    {
    new thread2().run();
    for(int n =0 ; n < 10 ;n++)
    {
    System.out.println("线程测试");
    }
    System.out.println("不知这句是否还会执行");
    }
    public void run()
    {
    for(int n =0 ; n < 10 ;n++)
    {
    System.out.println("测试run方法的测试情况");
    }
    }
    }
      

  2.   

    几点观点:1 应该注意你书写的格式 包括该大写的地方 这是一个良好的习惯啊:)2第一个肯定不会了,因为那里有两个while(true) 都是死循环啊 估计出错在第二个 不可到达3可以看一下api中关于Thread的,肯定就明白了4如果你象让你的程序调用到你写的run(),可以这样:
    class NewThread1 extends Thread
    {
    public static void main(String args[])
    {
    (new NewThread1()).run();
    while(true)
    {
    System.out.println("线程测试");
    }
    //System.out.println("不知这句是否还会执行");
    }
    public  void run()
    {
    while(true)
    {
    System.out.println("测试run方法的测试情况");
    }
    }
    }不知道我说的对不对 高手来解说吧 哦也刚看啊
      

  3.   

    你的第一个程序的第二个while(true){}是永远不会执行的!,因为如果执行的话,那也是第一个能!
    但是这样的写法在编译的时候会被检测出来!第二个程序就不一样了,首先通过new thread().run();执行的是run()方法!
    那是这个程序中while(true){}仍然不执行!
      

  4.   

    TO  wddodo(wd) ( ) 信誉:100  2005-04-16 08:46:00  得分: 0  
    你修改以后的代码执行后都是死循环啊
    结果是:  测试run方法的测试情况  刷屏
    怎么你的 for语句好象不管什么事的啊?
    这个算不算死锁啊?
      

  5.   

    楼主,我觉得也没什么内部机制拉,就是编译器比较傻,它只看在一个方法中是否有两个死循环,若有,就报错,说第二个是“unreachable statement”。若没有,就能通过编译了,尽管你通过run()方法还是调用了一个死循环,但这样是隐式的连续两个死循环,编译器还没有聪明到那种地步去发现它(抑或是它懒得管那么多了)。