Java Callback

主线程调用工作线程,传参数callback,工作线程因为使用新线程不阻塞主线程,工作线程的工作结果返回给callback,主线程实现callback决定工作线程的结果如何处理

以下是详细的解释:

  1. 主线程调用工作线程:

主线程创建工作线程的实例,并传递回调接口的实现作为参数。
主线程调用工作线程的方法来启动异步操作。
传参数callback:

  1. 主线程将回调接口的实现作为参数传递给工作线程。
    工作线程在完成工作后使用回调接口将结果返回给主线程。
    工作线程使用新线程不阻塞主线程:

  2. 工作线程在一个新线程中执行工作,这样主线程不会被阻塞。
    主线程可以继续执行其他操作。
    工作线程的工作结果返回给callback:

  3. 工作线程完成工作后,调用回调接口的onComplete方法,并将结果作为参数传递给回调方法。
    回调接口的实现是在主线程中定义的,所以回调方法将在主线程中执行。

  4. 主线程实现callback决定工作线程的结果如何处理:
    主线程实现了回调接口,定义了如何处理工作线程返回的结果。
    回调方法在主线程中执行,处理工作线程返回的结果。

接口-实现体系的优越性在于灵活性和可扩展性。通过使用回调接口,你可以在主线程中对同一个回调接口进行不同的实现,从而处理不同工作线程的结果。这样可以实现代码的解耦,使得代码更易于维护和扩展。

回调接口

public interface AsyncCallback {
    void onComplete(String message);
}

工作线程类

public class Main {
    public static void main(String[] args) {
        // 使用Lambda表达式实现回调接口
        AsyncCallback callback = message -> System.out.println("Callback received: " + message);

        // 创建AsyncWorker实例,并传入回调接口实现
        AsyncWorker worker = new AsyncWorker(callback);
        worker.doWork();

        // 主线程继续执行其他操作
        System.out.println("Main thread is not blocked.");
    }
}

主线程类

public class Main {
    public static void main(String[] args) {
        // 回调实现1:打印工作完成信息
        AsyncCallback callback1 = message -> System.out.println("Callback 1 received: " + message);

        // 回调实现2:记录工作完成信息
        AsyncCallback callback2 = message -> System.out.println("Callback 2 logging: " + message);

        // 创建不同的工作线程,并传入不同的回调实现
        AsyncWorker worker1 = new AsyncWorker(callback1);
        AsyncWorker worker2 = new AsyncWorker(callback2);

        worker1.doWork();
        worker2.doWork();

        System.out.println("Main thread is not blocked.");
    }
}

输出

Main thread is not blocked.
Working...
Working...
Callback 1 received: Work is done!
Callback 2 logging: Work is done!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值