使用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
