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

时间:2015-10-02 15:42:13

标签: java multithreading

我需要知道,我的这个程序是如何执行的。我将根据声明发表我的理解:

调用main方法并创建对象。一旦调用了第一个对象的start方法,它就会等待线程运行。当它运行时,它会调用run方法,而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();
}
}

1 个答案:

答案 0 :(得分:0)

两个线程同时运行。在t2开始之前,线程t1没有运行完成。相反,t1和t2都开始了。 start方法返回正确的方式。因此主要调用在t1开始,然后立即调用t2开始。