Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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 是否有必要扩展thread类以使用sleep方法。。?_Java_Multithreading_Applet - Fatal编程技术网

Java 是否有必要扩展thread类以使用sleep方法。。?

Java 是否有必要扩展thread类以使用sleep方法。。?,java,multithreading,applet,Java,Multithreading,Applet,所以我在学习java,我有点困惑。。。 所以,在学习线程时,我了解到有必要扩展线程类或实现可运行类。 在执行此程序时,使用Thread.sleep()而不执行上述任何过程 链接: 有人能解释一下发生了什么事吗?Thread.sleep()是一种static方法,因此您可以在任何地方调用它 class RunMe implements Runnable { @Override public void run() { for (int i = 0; i <

所以我在学习java,我有点困惑。。。 所以,在学习线程时,我了解到有必要扩展线程类或实现可运行类。 在执行此程序时,使用Thread.sleep()而不执行上述任何过程

链接:

有人能解释一下发生了什么事吗?

Thread.sleep()
是一种
static
方法,因此您可以在任何地方调用它

class RunMe implements Runnable {

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("Hello");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
类RunMe实现Runnable{
@凌驾
公开募捐{
对于(int i=0;i<100;i++){
System.out.println(“你好”);
试一试{
睡眠(1000);
}捕捉(中断异常e){
e、 printStackTrace();
}
}
}
}
请记住,所有Java代码都在一个线程中运行,因此调用
thread.sleep()
可以在任何地方进行。

使用thread.sleep(X)实际上是在暂停执行时间X

class RunMe implements Runnable {

    @Override
    public void run() {
        for (int i = 0; i < 100; i++) {
            System.out.println("Hello");
            try {
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
这适用于向服务器或数据库发送请求。没有人希望一次性向数据库或服务器发送巨大的请求

小份总是合理的。您可以划分请求并通过等待指定的持续时间发送它们

这是Thread.sleep()的重要用法之一

有一种处理线程暂停的非常合适的方法,即wait/notify。我建议用它。 你可以在那里查看;
之所以可以使用Thread.sleep而不实际创建线程,是因为主程序也在线程上运行。你只是在主线程上调用sleep。当您调用Thread.sleep时,java将为您确定它实际运行在哪个线程上。

如果您正在使用的教程告诉您扩展
Thread
找到一个新线程。通常,实现
Runnable
(可能作为lambda方法)并将其传递给
线程
实例(或管理线程的对象)。另外,
Thread.sleep
在真正的程序中是没有用的-你需要一个某种计时器。不
Thread.sleep()
Thread
类中的。您不需要使用
线程
实例来调用它。这是一个很好的例子,但我认为OP是在问,当程序根本不创建任何新的
线程
实例时,程序如何能够调用
线程.sleep()
。@SolomonSlow-很好的调用-FTFYNo!唯一的原因是
Thread.sleep
是一种静态方法。@Seelenvirtuose,当您进入范围时,您是正确的。托马斯解释的是两个代码1->ans 2->之间的区别