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

回到顶部