使用Runnable在Java中实现回调
我习惯于使用类似JavaScript或类似Erlang的语言编写代码,在其中我可以轻松实现回调函数。现在,我必须用Java编写一些东西。我想出了如何执行这样的回调:
import java.util.*;class Demo extends Thread{
private int data;
public void run(){
ask_for_data(new Runnable(){
public void run(){
on_data();
}
});
}
public void on_data(){
System.out.println("Async callback: " + data);
}
public void ask_for_data(final Runnable callback){
System.out.println("2");
Runnable r = new Runnable(){
public void run(){
data = get_data();
new Thread(callback).start();
}
};
new Thread(r).start();
}
public int get_data(){
try{
Thread.sleep(1000);
} catch (Exception e) {};
return 42;
}
public static void main(String[] args) {
Demo d = new Demo();
d.start();
}
}
问题是:这是正确的方法吗?
回答:
像这样简单地将一个接口(回调实现)传递给您的可运行对象
interface Callback { void callback(); // would be in any signature
}
class MyThread implements Runnable {
Callback c;
public MyThread(Callback c) {
this.c = c;
}
public void run() {
// some work
this.c.callback(); // callback
}
}
和一切简单的教程,您需要了解线程 这里
以上是 使用Runnable在Java中实现回调 的全部内容, 来源链接: utcz.com/qa/411177.html