使用Java编写的并发问题实例
以下是一个简单的Java并发问题实例,该实例展示了线程池和任务的执行:
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ConcurrentExample {
private static final int NUM_THREADS = 5; // 创建线程数量
public static void main(String[] args) {
// 创建线程池
ExecutorService executorService = Executors.newFixedThreadPool(NUM_THREADS);
// 提交任务到线程池
for (int i = 0; i < 10; i++) { // 每个任务的执行次数
final int index = i; // 为每个任务提供一个唯一的标识
executorService.submit(() -> {
System.out.println("Task " + index + " started..."); // 执行任务前打印信息
try {
TimeUnit.SECONDS.sleep(2); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Task " + index + " finished..."); // 执行任务后打印信息
});
}
// 关闭线程池
executorService.shutdown();
// 等待所有任务完成(如果有必要)
while (!executorService.isTerminated()) {
try {
Thread.sleep(100); // 间隔一段时间检查
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("All threads completed.");
}
}
这个例子中,我们创建了一个固定大小的线程池,并提交了10个耗时任务。每个任务完成后都会打印一条消息。
当所有任务完成时,我们会关闭线程池并检查是否还有未完成的任务。如果有,我们将继续等待直到所有任务都完成。
还没有评论,来说两句吧...