显式调用Runnable.run

0 java multithreading interface

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

void myMethod(Runnable runnable){ runnable.run(); }
Run Code Online (Sandbox Code Playgroud)

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

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

因此,要向myMethod提供参数,我需要实例化实现Runnable的(在这种情况下是匿名)类的对象.

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

interface MyInterface{ void doThis(); }
Run Code Online (Sandbox Code Playgroud)

然后改变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) { } }
Run Code Online (Sandbox Code Playgroud)

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

Dón*_*nal 5

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