MST
星途 面试题库

面试题:Java中回调机制在异步编程里的基础使用

请简述在Java异步编程中,如何使用回调机制来处理一个异步任务的结果。请用代码示例说明,假设你有一个模拟的异步任务,它会在一段时间后返回一个计算结果。
31.2万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

在Java异步编程中,使用回调机制处理异步任务结果的步骤如下:

  1. 定义回调接口,该接口包含处理异步任务结果的方法。
  2. 在异步任务执行的类中,接收回调接口的实例作为参数,并在任务完成时调用回调方法。

以下是代码示例:

// 定义回调接口
interface ResultCallback {
    void onResult(int result);
}

// 模拟异步任务类
class AsyncTask {
    public void executeAsync(ResultCallback callback) {
        new Thread(() -> {
            // 模拟任务执行耗时
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            int result = performCalculation();
            callback.onResult(result);
        }).start();
    }

    private int performCalculation() {
        return 42; // 模拟计算结果
    }
}

public class Main {
    public static void main(String[] args) {
        AsyncTask asyncTask = new AsyncTask();
        asyncTask.executeAsync(result -> {
            System.out.println("异步任务结果: " + result);
        });
        System.out.println("主线程继续执行其他任务...");
    }
}

在上述代码中:

  1. ResultCallback 接口定义了 onResult 方法,用于处理异步任务的结果。
  2. AsyncTask 类的 executeAsync 方法接收 ResultCallback 实例作为参数,并在新线程中执行异步任务。任务完成后,调用 callback.onResult(result) 将结果传递给回调方法。
  3. Main 类中,创建 AsyncTask 实例并调用 executeAsync 方法,传入一个实现了 ResultCallback 接口的匿名类实例,在其 onResult 方法中处理异步任务的结果。同时,主线程继续执行其他任务。