Java 在睡眠功能的情况下,多线程如何执行

Java 在睡眠功能的情况下,多线程如何执行,java,multithreading,Java,Multithreading,我需要知道,我的计划是如何执行的。我将把我的理解放在一个陈述一个陈述的地方: 调用main方法并创建对象。调用第一个对象的start方法后,它将等待线程运行。当它运行时,它调用run方法,该方法反过来启动for循环。在循环开始时,我设置了Thread.sleep,使该线程睡眠5秒。之后,它再次启动并沿整个循环打印。调用其他线程时也是如此 然而,输出是相反的,类似于{1,1然后2,2然后3,3然后4,4}。有人能理解这是怎么回事吗 package thread; public class th

我需要知道,我的计划是如何执行的。我将把我的理解放在一个陈述一个陈述的地方:

调用main方法并创建对象。调用第一个对象的start方法后,它将等待线程运行。当它运行时,它调用run方法,该方法反过来启动for循环。在循环开始时,我设置了Thread.sleep,使该线程睡眠5秒。之后,它再次启动并沿整个循环打印。调用其他线程时也是如此

然而,输出是相反的,类似于{1,1然后2,2然后3,3然后4,4}。有人能理解这是怎么回事吗

package thread;

public class th implements Runnable {
public void run() {
    for (int i = 1; i < 5; i++) {
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            System.out.println(e);
        }
          System.out.println(i);
    }
}

public static void main(String args[]) {
    th t1 = new th();
    th t2 = new th();
    Thread t = new Thread(t1);
    Thread tn = new Thread(t2);
    t.start();
    tn.start();
}
}
包线程;
公共类th实现可运行{
公开募捐{
对于(int i=1;i<5;i++){
试一试{
睡眠(5000);
}捕捉(中断异常e){
系统输出打印ln(e);
}
系统输出打印LN(i);
}
}
公共静态void main(字符串参数[]){
th t1=新的th();
th t2=新的th();
螺纹t=新螺纹(t1);
螺纹tn=新螺纹(t2);
t、 start();
tn.start();
}
}

两个线程同时运行。线程t1在t2开始之前不会运行到完成。相反,t1和t2都启动。start方法以正确的方式返回。因此,它会在t1上调用main,然后立即在t2上调用start。

您希望输出是什么?为什么?请等待5秒钟,因为这是循环中的第一条语句。印刷品1。然后将i增加到2。再次等待5秒钟,然后再继续。一旦这项工作完成,那么另一个线程(tn)应该按照在主方法@SotiriosDelimanoListThreads中调用的方式启动。根据定义,线程是并发的。它们是并行运行的。@SotiriosDelimanolis,所以你能给我一个答案,在我的程序中实现同样的功能,这将有助于基本的东西正常运行。多谢!实施什么?如果您想要顺序执行,请不要使用threads.com,但不要在执行单个线程时使用threads.com/