显式调用Runnable.run

时间:2010-04-19 06:35:40

标签: java multithreading interface

有人在我之前处理我的代码,创建了一些方法并将Runnable作为参数传递,更有可能:

void myMethod(Runnable runnable){ runnable.run(); }

然后从主要调用myMethod看起来像:

public static void main(String args[]) 
{ try 
{ myMethod(new Runnable(){ public void run() { //do something...; }}); } 
catch (Throwable t) { } }

因此,要向myMethod提供参数,我需要实例化实现Runnable的(在本例中为匿名)类的对象。

我的问题是:在这个例子中是否有必要使用Runnable?我可以使用任何不同的界面吗?我的意思是我可以使用单一方法创建新的界面,即

interface MyInterface{ void doThis(); }

然后改变myMethod的外观:void myMethod(MyInterface myObject){ myObject.doThis(); }

当然还有客户:

public static void main(String args[]) { 
try { myMethod(new MyInterface (){ public void doThis() 
{ //do something...; }}); } 
catch (Throwable t) { } }

或者也许是关于Runnable的东西?!

1 个答案:

答案 0 :(得分:5)

你可以按照你的建议绝对改变界面,但有什么意义呢?它提供MyInterface而不是Runnable的实例有什么好处? Runnable的一个优点是,将来可以更容易地使代码成为多线程,因为执行线程的大多数API(例如Executor)都可以使用Runnable的实例}。