繁体   English   中英

java-Thread.sleep

[英]java - Thread.sleep

在下面的代码和输出中,t2直到t1完成才开始。 他们不应该并行工作吗? Thread.sleep()是否会影响整个过程?

public class Main {

    public static void main(String[] args) {

        T t1 = new T(), t2 = new T();

        t1.run();
        t2.run();
    }
}

class Test {

    private int x;

    void foo() {

        synchronized (this){
            System.out.println("Entered");
            try {
                Thread.sleep(5000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            System.out.println("Exit");
        }
    }
}

class T extends Thread {

    static Test t = new Test();

    public void run() {

        System.out.println("Thread started");
        t.foo();
    }

}

输出:

线程开始

进入

出口

线程开始

进入

出口

如果要将它们作为单独的线程运行,则需要调用Thread.start()方法。

而是直接调用run()方法。 这两个调用将在与调用者相同的线程中执行。

RunnableRunnable ,通常您可以只继承Runnable而不是Thread。 然后,您可以选择将Runnable传递给Thread(Runnable)构造函数-或传递给ExecutorService

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM