并发任务执行时间的测量差异可以通过以下几种方法解决:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ConcurrentTaskExecution {
public static void main(String[] args) {
// 创建线程池
ExecutorService executor = Executors.newFixedThreadPool(5);
// 提交任务给线程池并发执行
for (int i = 0; i < 10; i++) {
final int taskId = i;
executor.execute(() -> {
// 执行任务的代码
System.out.println("Task " + taskId + " is executing.");
//...
});
}
// 关闭线程池
executor.shutdown();
}
}
import java.util.concurrent.CountDownLatch;
public class ConcurrentTaskExecution {
public static void main(String[] args) throws InterruptedException {
int numTasks = 10;
CountDownLatch latch = new CountDownLatch(numTasks);
for (int i = 0; i < numTasks; i++) {
final int taskId = i;
new Thread(() -> {
// 执行任务的代码
System.out.println("Task " + taskId + " is executing.");
//...
latch.countDown();
}).start();
}
latch.await(); // 等待所有任务执行完成
// 所有任务执行完成后的操作
}
}
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
public class ConcurrentTaskExecution {
public static void main(String[] args) throws InterruptedException {
int numTasks = 10;
Map resultMap = new ConcurrentHashMap<>();
for (int i = 0; i < numTasks; i++) {
final int taskId = i;
new Thread(() -> {
// 执行任务的代码
System.out.println("Task " + taskId + " is executing.");
//...
String result = "Task " + taskId + " completed.";
resultMap.put(taskId, result);
}).start();
}
// 等待所有任务执行完成
while (resultMap.size() < numTasks) {
Thread.sleep(100);
}
// 获取任务执行结果进行进一步处理
for (int i = 0; i < numTasks; i++) {
String result = resultMap.get(i);
System.out.println(result);
}
}
}
通过使用以上方法,可以有效地测量并发任务执行时间的差异,并对任务的执行结果进行进一步处理。