在 Java 中,多线程获取返回值的常见方式有以下几种:
1. 使用Callable和Future接口:Callable接口是一个带有泛型参数的接口,用于定义可以返回结果的任务,Future是一个表示异步任务结果的接口。通过Callable和Future可以在主线程中提交一个任务给线程池执行,并得到执行结果。
示例代码如下:
import java.util.concurrent.*; public class Main { public static void main(String[] args) throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newFixedThreadPool(1); Callable task = () -> { // 在这里编写任务的逻辑 return 12345; }; Future future = executor.submit(task); executor.shutdown(); int result = future.get(); System.out.println(result); } }
2. 使用join方法:join方法是Thread类提供的一个方法,它使得一个线程等待另一个线程执行完毕后才会继续执行。通过调用join方法,可以等待子线程执行完毕并获取其返回结果。
示例代码如下:
public class Main { public static void main(String[] args) throws InterruptedException { Thread thread = new Thread(() -> { // 在这里编写任务的逻辑 // 计算并返回一个结果 System.out.println("子线程执行完毕"); }); thread.start(); thread.join(); System.out.println("主线程继续执行"); } }
在上述例子中,可以在子线程中计算并返回一个结果,然后通过join方法让主线程等待子线程执行完毕后获取结果。
3. 使用回调函数:回调函数是一种异步编程的技术,它通过定义一个接口,在需要的时候调用接口的方法来获取结果。在多线程中,可以定义一个回调函数接口,然后在子线程中执行任务,并在任务完成后调用回调函数的方法将结果返回给主线程。
示例代码如下:
public interface Callback { void onTaskCompleted(int result); } public class Worker implements Runnable { private Callback callback; public Worker(Callback callback) { this.callback = callback; } @Override public void run() { // 在这里编写任务的逻辑 // 计算并返回一个结果 int result = 12345; callback.onTaskCompleted(result); } } public class Main { public static void main(String[] args) { Callback callback = new Callback() { @Override public void onTaskCompleted(int result) { System.out.println(result); } }; Thread thread = new Thread(new Worker(callback)); thread.start(); } }
在上述例子中,定义了一个回调函数接口Callback,然后在子线程中执行任务,并在任务完成后调用回调函数的方法将结果返回给主线程。主线程通过实现Callback接口的方式来定义回调函数的逻辑,并将回调函数传递给子线程。
财旺号所有作品(图文、网盘、音视频)收集于网络,均由用户自行上传分享,仅供网友学习交流,不声明或保证其内容的正确性,如发现本站有涉嫌抄袭侵权/违法违规的内容。请发送邮件至 1790309299@qq.com 举报,一经查实,本站将立刻删除。