日期:2014-05-20  浏览次数:20700 次

Java多线程
本帖最后由 xujinsmile 于 2013-01-28 23:56:15 编辑
如下程序:
package cn.xujin;

public class X implements Runnable{ 
private int x; 
private int y; 
public static void main(String[] args){ 
X that =new X(); 
X other = new X();
X theOther = new X();
System.out.println("0");
(new Thread(that)).start(); 
System.out.println("1");
(new Thread(other)).start(); 
System.out.println("2");
(new Thread(theOther)).start(); 

String s1 = "d";
String s2 = "222";
String s = s1 + s2;
System.out.println("over");
   } 
public synchronized void run(){ 
for(;;){ 
x++; 
y++; 
System.out.println("x="+x+",y="+y + "  " + Thread.currentThread().getName()); 
if(x > 10) break;

   } 
}  

他的输出结果总是类似:
0
1
2
over
x=1,y=1  Thread-0
x=1,y=1  Thread-2
x=1,y=1  Thread-1
.....

也就是先输出其他的,然后执行进程相关的代码,我就是不明白这个顺序。
有什么原理么?
java 多线程 thread

------解决方案--------------------
假定主子线程自子线程启动那一刻后所获得的时间片资源是相等的,那么就是子线程自启动后至其打印语句所经历的语句执行时间要比主线程的多才会如此表现。