主线程调用工作线程,传参数callback,工作线程因为使用新线程不阻塞主线程,工作线程的工作结果返回给callback,主线程实现callback决定工作线程的结果如何处理
以下是详细的解释:
- 主线程调用工作线程:
主线程创建工作线程的实例,并传递回调接口的实现作为参数。
主线程调用工作线程的方法来启动异步操作。
传参数callback:
-
主线程将回调接口的实现作为参数传递给工作线程。
工作线程在完成工作后使用回调接口将结果返回给主线程。
工作线程使用新线程不阻塞主线程: -
工作线程在一个新线程中执行工作,这样主线程不会被阻塞。
主线程可以继续执行其他操作。
工作线程的工作结果返回给callback: -
工作线程完成工作后,调用回调接口的onComplete方法,并将结果作为参数传递给回调方法。
回调接口的实现是在主线程中定义的,所以回调方法将在主线程中执行。 -
主线程实现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!