gpt4 book ai didi

java - 如何暂停主线程并发执行2个方法,然后返回主线程?

转载 作者:行者123 更新时间:2023-12-01 17:46:52 25 4
gpt4 key购买 nike

我有一个包含 5 个方法的类。在程序的某个时刻,我想同时运行其中 2 个方法。下图说明了我正在谈论的内容。method2() 完成后,我希望 method3() 和 method4() 同时运行。 Method3() 和 method4() 本质上做的是完全相同的事情,但具有隔离的资源,因此不必同步。当 method3() 和 method4() 完成时,我希望辅助线程被销毁并且程序返回到主线程。最好的方法是什么?

Image of program threads

我尝试调用 ExecutorService,但这似乎创建了与主线程同时运行的线程 - 而不是暂停主线程。

 ExecutorService executorService = Executors.newFixedThreadPool(2);

// method reference introduced in Java 8
executorService.submit(this::method3());
executorService.submit(this::method4());

// close executorService
executorService.shutdown();

最佳答案

executorService.submit返回Future<T> ,您可以调用 get()阻止你的线程。所以:

ExecutorService executorService = Executors.newFixedThreadPool(2);

Future<?> f1 = executorService.submit(this::method3());
Future<?> f2 = executorService.submit(this::method4());

f1.get();
f2.get();

executorService.shutdown();

f1.get()f2.get()将阻塞主线程,直到两个 future 都完成。另外,如果需要多次创建执行器服务,最好保留执行器服务而不调用 shutdown()在上面。线程将简单地停止。

关于java - 如何暂停主线程并发执行2个方法,然后返回主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54204075/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com