我今天刚开始学习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();
答案 0 :(得分:4)
在某些情况下,当您已经有一个index_together
实例只能在另一个线程中运行时,它可能会很有用。例如Runnable
可以用于消除命令设计模式。
在您的情况下,没有理由创建Runnable
,因为它不会添加任何内容。
答案 1 :(得分:1)
基本上你需要明白,如果你必须修改 Thread的行为然后你需要扩展Thread类,否则如果 你只需要运行一些单独的线程然后你需要实现 界面Runnable。
答案 2 :(得分:0)
您可能听说过线程池;我们在哪里重用线程来处理不同的作业(读取runnables)。看看threadpoolexecutor API提交方法。这会给你一些想法。