Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
线程睡眠在java内部是如何工作的?_Java - Fatal编程技术网

线程睡眠在java内部是如何工作的?

线程睡眠在java内部是如何工作的?,java,Java,这可能是一个愚蠢的问题,但我已经研究了很多,我没有得到任何令人满意的知识。 有人能帮我理解吗 我的代码 public class sleepclass extends Thread { public static void main(String[] args) { sleepclass t1 = new sleepclass(); sleepclass t2 = new sleepclass(); t1.start();

这可能是一个愚蠢的问题,但我已经研究了很多,我没有得到任何令人满意的知识。 有人能帮我理解吗

我的代码

public class sleepclass extends Thread {
    public static void main(String[] args) {
        sleepclass t1 = new sleepclass();
        sleepclass t2 = new sleepclass();
        t1.start();
        t2.start();
    }

    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);
        }
    }
}
现在根据输出,我可以看到两个线程都进入睡眠状态。两者同时出现

我的问题是:

一,。既然睡眠是一种静态的方法,那么如何同时工作和睡眠呢?(请用外行解释)

  • 我可以只睡t1而让t2跑吗
  • Thread.sleep()
    睡眠当前线程。它对其他地方没有影响

    如果您想让一个线程休眠,而另一个线程不在当前代码中,则必须有某种指示器来控制它。例如
    布尔
    标志,然后检查:

    if(shouldSleep) {
        Thread.sleep(5000);
    }
    

    否则,所有线程将执行相同的代码,所有线程将休眠5秒。

    这是一个静态方法--它会阻止当前线程,它被称为inAh。谢谢,我正在寻找一个重复的线程。不是你的down voter,但可能不需要它answer@HovercraftFullOfEels你能用更好的方式解释一下吗。。只是问问,睡眠在体内起什么作用?我是说某种超时?在javascript机制中,如果是,我们也可以休眠任何api调用吗?@hovercraftfullofels是的,我回答了“如何使一个线程休眠而不是另一个线程”部分。否则被骗者就足够了(或者如果我在寻找被骗者时找到了它)。@alesio.rian这真的很重要吗?线程休眠(停止执行代码)。这是一个你不应该太在意的内在机制,特别是如果你是初学者的话。
    if(shouldSleep) {
        Thread.sleep(5000);
    }