使用匿名类启动线程是否合法?

时间:2016-06-17 20:24:52

标签: java multithreading

通常,为了启动一个线程,我们要么扩展Thread类,要么实现Runnable接口并覆盖run()方法。但是在下面的代码中我们没有做任何上面的事实,事实上它是使用匿名类来创建一个线程。在java中启动线程真的是一个好/合法/可取的方法吗?

  Thread thread = new Thread(new Runnable() {

    @Override
    public void run() {

    }

});

thread.start();

4 个答案:

答案 0 :(得分:2)

  

在java中启动线程真的是一个好/合法/可行的方法吗?

好吗? - 它的优点是否取决于你的要求,如果你需要一个线程来运行一些火灾和忘记方式的重要功能,那么它可能没问题。

合法吗? - 这是合法的 - 这段代码编译并运行得很好

可取吗? - 不是真的,这可能是基于意见的,但我建议将ExecutorsFutureFutureTask一起使用

答案 1 :(得分:1)

我这样做有两个原因

  1. 学习如何使用匿名线程
  2. 当我有一个具有可预测行为的线程时,我可以保证在线程内完成。
  3. 否则我会避免这种结构。

答案 2 :(得分:-1)

这是一种不好的方法,因为你需要复制/粘贴每个Thread的run方法。

与使用方法/类而不是将所有代码放在一个文件中的原因相同。

答案 3 :(得分:-1)

伙计完全取决于您的要求,可能存在需要访问外部类的私有变量的用例,因此您使用了内部匿名类。关于产生新线程,假设您正在将它用于特定目的,请说网络调用在这种情况下,您应该在设计线程池的地方正确使用它,并使用产生有限数量的线程而不管网络请求的数量。 / p>