gpt4 book ai didi

java - 使用 Runnable 在 Java 中实现回调

转载 作者:IT老高 更新时间:2023-10-28 20:50:32 27 4
gpt4 key购买 nike

我习惯于用类似 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)(回调实现)传递给您的可运行对象

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
}
}

还有一个关于线程 here 所需的一切的简单教程

关于java - 使用 Runnable 在 Java 中实现回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17255498/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com