Java的;制作线程之间的差异

时间:2015-07-03 08:42:47

标签: java multithreading

我今天刚开始学习Java中的Threads。 到目前为止,我看到人们通常使用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()?像上面的第二个例子一样?因为我已经看到了一些tuturials,我在网上找到了。 我只想问是否有理由这样做。

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

第3:

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

4

MyThreadClass my1 = new MyThreadClass();

3 个答案:

答案 0 :(得分:4)

在某些情况下,当您已经有一个index_together实例只能在另一个线程中运行时,它可能会很有用。例如Runnable可以用于消除命令设计模式。

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

答案 1 :(得分:1)

  

基本上你需要明白,如果你必须修改   Thread的行为然后你需要扩展Thread类,否则如果   你只需要运行一些单独的线程然后你需要实现   界面Runnable。

请参阅此处了解详情:https://stackoverflow.com/a/16489176/1129313

答案 2 :(得分:0)

您可能听说过线程池;我们在哪里重用线程来处理不同的作业(读取runnables)。看看threadpoolexecutor API提交方法。这会给你一些想法。