求程序运行结果和程序分析:
public class Test extends Thread
{
static String sName = "vandeleur";
public static void main(String args[])
{
Test t = new Test();
t.piggy(sName);
System.out.println(sName);
}
public void piggy(String sName)
{
sName = sName + " wiggy";
start();
}
public void run()
{
for(int i=0;i<4;i++)
{
sName = sName + " " + i;
}
}
}
public class Test extends Thread
{
static String sName = "vandeleur";
public static void main(String args[])
{
Test t = new Test();
t.piggy(sName);
System.out.println(sName);
}
public void piggy(String sName)
{
sName = sName + " wiggy";
start();
}
public void run()
{
for(int i=0;i<4;i++)
{
sName = sName + " " + i;
}
}
}
实际上输出的结果只在main函数中,那么输出的结果就取决于主线程和新线程的执行次序了,也取决于Java虚拟机的分配机制。你可以试试在System.out.println这句之前加一句yield();看看不同的情形