作者:小彩菜 | 来源:互联网 | 2024-12-06 08:55
我正在开发一个功能,需要在一个方法中调用八个不同的子方法。
在这八个方法中,有两个属于单线程任务,而另外六个则适合多线程处理。
我的目标是在保证效率的同时,并行处理这两组任务。
虽然我知道可以使用线程来实现这一目标,但在实际操作中遇到了困难,主要是因为缺乏具体的示例或对现有示例的理解不足。
是否可以提供一个简单的示例代码,帮助我更好地理解和实现这一目标?
非常感谢!
解决方案如下所示:
下面是一个利用Java并发库中的ExecutorService
来并行处理两组不同任务的示例代码:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class TaskExecutor {
public static void main(String[] args) throws InterruptedException {
// 创建一个固定大小为2的线程池
ExecutorService executor = Executors.newFixedThreadPool(2);
// 提交第一个任务,包含两个单线程方法
executor.submit(() -> {
singleThreadTask1();
singleThreadTask2();
});
// 提交第二个任务,包含六个可以并发执行的方法
executor.submit(() -> {
multiThreadTask1();
multiThreadTask2();
multiThreadTask3();
multiThreadTask4();
multiThreadTask5();
multiThreadTask6();
});
// 关闭线程池,并等待所有任务完成
executor.shutdown();
if (!executor.awaitTermination(1, TimeUnit.DAYS)) {
System.err.println("线程池未能在规定时间内完成所有任务。");
}
}
}
上述代码通过创建一个固定大小的线程池来管理并发任务,确保了资源的有效利用和任务的高效执行。