Java异步回调

文章通过一个Java代码实例展示了同步回调和异步回调的概念。在同步回调中,调用方法会阻塞直到返回值获取;而在异步回调中,调用方开启新线程,不会等待结果,被调用方通过回调函数传递结果。Main类创建了Server对象,并实现了Server接口的Callback,将回调方法传给Server的Solve方法,展示了多线程环境下异步处理的机制。
摘要由CSDN通过智能技术生成

同步回调:单线程中调用一个方法在得到返回值时一直阻塞

异步回调:多线程中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

运行结果:

丁真发个消息给雪豹!

开始处理丁真的消息
丁真在思考!

开始处理丁真的消息
丁真在思考!

雪豹闭嘴别坏了我的好事

动物朋友们你好窝是丁真

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值