public class Tux extends Thread
{
  static String sName="hello";
public static void main(String[] args)throws Exception {
 Tux t=new Tux();
 t.piggy(sName); Thread.sleep(100);
 System.out.println(sName);
}
  public void piggy(String sName)
  {
    sName=sName+"wiggy";
    start();
  }
  public void run()
  {
    for (int i = 0; i < 3; i++) {
      sName=sName+" "+i;
    }  }
}两个线程执行随机行,主线程先执行了,你让主线程休眠一会就可以了.

解决方案 »

  1.   

    我刚开始学JAVA,看看上面的, JAVA功能好强呀,直接可以来多线程的, 我去年用c写线程,代码就是繁呀。呵呵。
      

  2.   

    但是我多次运行都是hello,看来循环次数少必然是这个结果了,否则也不会这么问了。这个题目出的真有水平,考了2个点
      

  3.   

    还up什么啊? 楼主可以结贴了.
    上面不是说得很清楚吗? 这是因为主线程提前执行完毕, sName还没来得被线程t改变就已经被打印出来了.
      

  4.   


    public class Tux extends Thread
    {
      static String sName="hello";
    public static void main(String[] args) throws Exception{
     Tux t=new Tux();
     t.piggy(sName); t.join(); //<-------
     System.out.println(sName);
    }
      public void piggy(String sName)
      {
        sName=sName+"wiggy";
        start();
      }
      public void run()
      {
        for (int i = 0; i < 3; i++) {
          sName=sName+" "+i;
        }  }
    }
      

  5.   

    Dan1980你倒是个急性子,我对线程不太懂,多说说不行吗,回答问题的还没说什么你倒先急了,皇帝不急太监急。
      

  6.   

    static String sName="hello";important  is the world "static " 
    cannot be changed
      

  7.   

    我从调试中运行是可以显示hello 0 1 2的,所以正如eureka0891() 所说的,应该是这样的
      

  8.   

    static String sName="hello";
    "static"关键字 定义的变量是不可以改变的.
    你将static String sName="hello"; 改成String sName="hello"; 试试