Java 使用Join方法的不同输出

Java 使用Join方法的不同输出,java,multithreading,join,Java,Multithreading,Join,我读了一些教程,甚至已经问了一些问题 但我又对join方法感到困惑。 据我所知,Java无法保证在正常情况下线程的执行顺序 我使用join()阅读的内容是,它确保只要一个线程调用join,当前线程就不会执行,除非调用join的线程完成 我试过的例子 公共类ThreadTest1扩展线程{ @凌驾 公开募捐{ super.run(); 对于(int i=0;i这里的问题是两个线程独立启动并开始打印内容,在th0.start和th1.start之间发生的事情是不确定的 另外,应用程序的主系统线程正在

我读了一些教程,甚至已经问了一些问题

但我又对join方法感到困惑。 据我所知,Java无法保证在正常情况下线程的执行顺序

我使用join()阅读的内容是,它确保只要一个线程调用join,当前线程就不会执行,除非调用join的线程完成

我试过的例子

公共类ThreadTest1扩展线程{
@凌驾
公开募捐{
super.run();

对于(int i=0;i这里的问题是两个线程独立启动并开始打印内容,在
th0.start
th1.start
之间发生的事情是不确定的


另外,应用程序的主系统线程正在等待
th1
完成,
th0
th1
彼此独立地执行它们的
run
方法,这就是为什么每次都会得到不同的序列。

您可以尝试使用下面的

 try {
        th1.join();
    } catch (InterruptedException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
实际上,通过使用join(10000)方法,我们说的是等待其他线程的atmost 10000ms…如果其他线程没有在10000ms内完成,则当前线程的执行开始

join()的使用并没有指定它等待其他线程完成执行的时间…

th2.start();
应该是
th1.start();
,对吗?对于th/th0也是这样。