我正在尝试改善我的JAVA。现在我有一个关于线程的我不明白的问题。
我尝试的代码是
public class MyThread implements Runnable {
private int end;
private String name;
public MyThread(String name, int end) {
this.end = end;
this.name = name;
}
@Override
public void run() {
for (int i = 0; i < end; i++) {
System.out.println(name + " : " + i);
}
}
}
public class ThreadLesson {
public static void main(String[] args) {
Thread thread1 = new Thread(new MyThread("thread1", 6));
Thread thread2 = new Thread(new MyThread("thread2", 5), "thread2");
thread1.start();
thread2.start();
}
}
在课程输出是
thread1 : 0
thread2 : 0
thread2 : 1
thread2 : 2
thread1 : 1
thread2 : 3
thread1 : 2
thread2 : 4
thread1 : 3
thread1 : 4
thread1 : 5
我的出路是
Thread1:0
Thread2:0
Thread1:1
Thread1:2
Thread1:3
Thread1:4
Thread1:5
Thread2:1
Thread2:2
Thread2:3
Thread2:4
我的问题是
为什么我的课输出是不一样的?有一些问题或谁写了该课,只是编辑输出以使文章变得更好。
最佳答案
在课上的某个地方,这可能是用粗体字写的。您不应期望获得与此处所示相同的结果。您通过传递2个不同的可运行对象启动了2个线程。没有适当的同步,就无法确定输出结果。