我正在尝试改善我的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个线程。没有适当的同步,就无法确定输出结果。

10-04 14:12