同步回调:单线程中调用一个方法在得到返回值时一直阻塞
异步回调:多线程中1号线程调用A方法时多开2号线程,并把想要回调的方法B给A方法,之后不管A方法如何,1号线程继续执行(因为多开了2号线程),而被调用的1号线程的B方法就是被回调的函数
代码实例
Main.java
public class Main {
public static void main(String[] args) {
System.out.println("丁真发个消息给雪豹!\n");
Server server = new Server();
server.Solve(new Server.Callback() {
@Override
public void call(String msg) {
System.out.println("动物朋友们你好"+msg);
}
},"窝是丁真\n");//实现Server的接口并传给Server,下面的一样
System.out.println("丁真在思考!\n");
server.Solve(new Server.Callback() {
@Override
public void call(String msg) {
System.out.println("雪豹闭嘴"+msg);
}
},"别坏了我的好事\n");
System.out.println("丁真在思考!\n");
}
}
Server.java
import static java.lang.Thread.sleep;
public class Server {
public static interface Callback{
public void call(String msg);
}
public void Solve(Callback callback,String msg){
System.out.println("开始处理丁真的消息");
new Thread(()->{
try
{
sleep(3000);
callback.call(msg);
}catch (InterruptedException e){
e.printStackTrace();
}
}).start();
}
}
实现方式:
1.Server需要有一个接口Callback来接受别的线程实现的函数
2.在实际调用的Solve中多开线程并调用接口函数
3.Main中实现接口函数并传给Server
运行结果:
丁真发个消息给雪豹!
扫描二维码关注公众号,回复:
16716217 查看本文章
开始处理丁真的消息
丁真在思考!
开始处理丁真的消息
丁真在思考!
雪豹闭嘴别坏了我的好事
动物朋友们你好窝是丁真