java ;制作线程之间的区别

标签 java multithreading

我今天才开始学习 Java 中的线程。 到目前为止,我看到人们通常使用 2 种方法来创建它们,但我不明白它们之间的区别:

1:

new Thread() {
    @Override
    public void run(){
        //mycode goes here;
    };
}.start();

2:

new Thread(new Runnable() {
    @Override
    public void run(){
        //mycode goes here;
    }
}).start();

那么,如果没有必要,人们为什么要使用 new Runnable()?它只是强制您拥有 run() 方法,但是如果您创建线程,那么不自己创建 run 方法是不合逻辑的吗?还是我错了?

但是为什么在创建匿名线程时要使用new Runnable()呢?就像上面的第二个例子?因为我已经看到这是我在网上找到的一些教程。 我只是问是否有这样做的理由。

我知道线程也可以通过其他方式创建:
(我不是在谈论实现与扩展!)

3:

Thread t1 = new Thread(new MyRunnable());

4:

MyThreadClass my1 = new MyThreadClass();

最佳答案

在某些情况下,当您已经有一个 Runnable 的实例可以在不同的线程中运行时,它可能会很有用。例如 Runnables 可用于封装命令设计模式。

在您的情况下,没有理由创建 Runnable,因为它不会添加任何内容。

关于 java ;制作线程之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31202380/

相关文章:

Java Libgdx 正确省略 gwt 构建的类引用

java - jSoup 从 img 标签获取标题

java - 在科威特获取选定的单选按钮

c++ - 有什么方法可以中止 cin 或 scanf

java - 当我在 EDT 之外的线程上调用打印方法时没有任何反应?

Java 光线追踪器 : Multithreaded CPU rendering of different parts of the screen per thread

java - 询问 "Update Dependencies from package.json"的对话框提供了 "Run ' npm install'"按钮,*之后* 我已经成功运行我的 Vaadin 14.0.8 应用程序

Java 线程暂停后无法恢复

Java同步外部文件读写

c++ - 通知线程是否有可能在被通知线程等待锁定之前锁定?