Java 并发(多线程)超详细
warning:
这篇文章距离上次修改已过215天,其中的内容可能已经有所变动。
Java 中处理并发通常涉及到 Thread
类和其他并发工具类,如 Runnable
, Callable
, Future
, FutureTask
, Executor
, ExecutorService
, Semaphore
, CountDownLatch
, CyclicBarrier
等。以下是一个简单的例子,展示了如何使用这些工具来处理并发。
import java.util.concurrent.*;
public class ConcurrencyExample {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(4);
CountDownLatch latch = new CountDownLatch(4);
for (int i = 0; i < 4; i++) {
final int taskId = i;
executor.submit(new Runnable() {
public void run() {
try {
System.out.println("Task " + taskId + " is running.");
Thread.sleep(2000);
System.out.println("Task " + taskId + " is done.");
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
latch.countDown();
}
}
});
}
try {
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
executor.shutdown();
}
System.out.println("All tasks are completed.");
}
}
这段代码创建了一个固定大小的线程池,然后提交了四个简单的任务。每个任务在运行前后打印一条消息,并休眠2秒钟。使用 CountDownLatch
来确保主线程等待所有任务完成后再继续执行。最后关闭线程池。这是一个并发编程的基本例子,展示了如何在Java中使用并发工具来提高程序的性能和响应性。
评论已关闭