package lianshou;public class Mythread extends Thread { private static int count = 0; public Mythread(String name) { super(name); }
public static void main(String[] args) {
Mythread p = new Mythread("ta");
p.start();
for (int i = 0; i < 5; i++) {
count++;
System.out.println(count + ": " + "main");

// p.start();
if(true)break;
}
for (int b = 0; b < 5; b++) {
count++;
System.out.println(count + ": " + "main");

// p.start();
if(true)break;
}

} public void run() {
for (int i = 0; i < 5; i++) {
count++;
System.out.println(count + ":" + this.getName());
}
}
}
把代码复制到eclipse上运行多几次发现结果会有小小的变化!!  
结果1:
1: main
3: main
2:ta
4:ta
5:ta
6:ta结果2:
1: main
2: main
3:ta
4:ta
5:ta
6:ta
7:ta为什么???望各位赐教!!!  小弟刚刚学java!!

解决方案 »

  1.   

    这是线程的特点,可以将main看做主线程,thread看做子线程,线程与线程之间是并行关系,即不加约束的话相互之间不干扰,所以他们可以随机获得运行机会(按时间片随机得到运行机会),这样你每次运行就会得到不同的结果
      

  2.   

    你说的结果不同指的是编号的顺序不同?
    如果是这个,1楼的兄弟已经说明了。
    还是结果1里面出现了6个,结果2里面出现了7个?
    如果是这个,我大概看了下代码,觉得结果1你是copy错了。应该有7个。
      

  3.   

    个人感觉同意 yanyuegongzuoshi  的看法 就是并行的、随即的  谁在前 在后 是不确定的
      

  4.   

    写错了  是 同意 joneyonly 的 不好意思