Java 实现回调

Survive by day and develop by night.
talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive.
happy for hardess to solve denpendies.

目录

在这里插入图片描述

概述

回调函数

需求:

设计思路

介绍 Java 实现回调的四种写法:

实现思路分析

1.反射;

public class Main {
    public static void main(String[] args) throws Exception {
        Request request = new Request();
        System.out.println("[Main]:�ҿ����߳�ȥ�첽������");
        new Thread(() -> {
            try {
                request.send(CallBack.class, CallBack.class.getMethod("processResponse"));
            } catch (Exception e) {
                e.printStackTrace();
            }
        }).start();
        System.out.println("[Main]:�������ˣ���ȥ�ɵ���");
        Thread.sleep(100000);
    }
}

2.直接调用

public class Main2 {
    public static void main(String[] args) throws Exception {
        Request request = new Request();
        System.out.println("[Main]:�ҿ����߳�ȥ�첽������");
        CallBack callBack = new CallBack();
        new Thread(() -> {
            try {
                request.send(callBack);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }).start();
        System.out.println("[Main]:�������ˣ���ȥ�ɵ���");
        Thread.sleep(100000);
    }
}

3.接口调用;

public class Main {
    public static void main(String[] args) throws Exception {
        Request request = new Request();
        System.out.println("[Main]:�ҿ����߳�ȥ�첽������");
        CallBack callBack = new CallBackImpl();
        new Thread(() -> {
            try {
                request.send(callBack);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }).start();
        System.out.println("[Main]:�������ˣ���ȥ�ɵ���");
        Thread.sleep(100000);
    }
}

4.Lambda表达式。

public class Main {
	  public static void main(String[] args) throws Exception {
	        Request request = new Request();
	        System.out.println("[Main]:我开个线程去异步发请求");
	        new Thread(() -> {
	            try {
	                request.send(()-> System.out.println("[CallBack]:处理响应"));
	            } catch (Exception e) {
	                e.printStackTrace();
	            }
	        }).start();
	        System.out.println("[Main]:请求发完了,我去干点别的");
	        Thread.sleep(100000);
	    }
}

拓展实现

暂无:

性能参数测试:

1.功能测试

2.性能测试

这里主要是性能测试曲线,时间度量曲线测试:

3.高并发

接口的压力测试等

4.高可用的测试:

高可用的测试用工具。

参考资料和推荐阅读

  1. https://blog.csdn.net/AAA123524457/article/details/116019124

欢迎阅读,各位老铁,如果对你有帮助,点个赞加个关注呗!~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
回调是一种常见的编程模式,它允许一个对象或函数在特定事件发生时调用另一个对象或函数。 在Java中,实现回调有多种方式,其中一种是使用接口和回调函数。 下面是一个使用回调的示例,其中一个类(Caller)调用另一个类(Callee)中的方法,并在该方法完成后调用一个回调函数来通知Caller。 接口定义: ```java public interface Callback { public void onComplete(); } ``` Callee类: ```java public class Callee { public void doSomething(Callback callback) { // 模拟执行一个操作 try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } // 操作完成后调用回调函数 callback.onComplete(); } } ``` Caller类: ```java public class Caller implements Callback { private Callee callee; public Caller() { this.callee = new Callee(); } public void doCall() { // 调用Callee的方法,并将自身作为回调函数传入 callee.doSomething(this); System.out.println("Caller: doCall() completed"); } @Override public void onComplete() { System.out.println("Caller: onComplete() called"); } public static void main(String[] args) { Caller caller = new Caller(); caller.doCall(); } } ``` 在这个示例中,Caller类实现了Callback接口,并在doCall()方法中调用Callee的doSomething()方法,并将自身作为回调函数传入。 当Callee中的操作完成后,它调用回调函数onComplete(),Caller中的相应方法被调用。 输出结果: ``` Caller: onComplete() called Caller: doCall() completed ``` 完整源代码如下: ```java public interface Callback { public void onComplete(); } public class Callee { public void doSomething(Callback callback) { // 模拟执行一个操作 try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } // 操作完成后调用回调函数 callback.onComplete(); } } public class Caller implements Callback { private Callee callee; public Caller() { this.callee = new Callee(); } public void doCall() { // 调用Callee的方法,并将自身作为回调函数传入 callee.doSomething(this); System.out.println("Caller: doCall() completed"); } @Override public void onComplete() { System.out.println("Caller: onComplete() called"); } public static void main(String[] args) { Caller caller = new Caller(); caller.doCall(); } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

执于代码

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值