Java 并发编程是 Java 程序员必须掌握的核心技能之一。在多核处理器日益普及的今天,合理利用并发技术可以显著提高程序的性能和响应速度。
什么是并发?
并发(Concurrency)指的是在同一时间执行多个任务的能力。在 Java 中,并发可以通过多种方式实现,例如线程(Thread)、线程池(ThreadPool)和并发类(如 java.util.concurrent
包中的类)。
Java 线程
线程是 Java 程序中执行任务的基本单位。Java 线程可以通过以下方式创建:
- 继承
java.lang.Thread
类 - 实现
java.lang.Runnable
接口
以下是一个简单的线程创建示例:
public class MyThread extends Thread {
public void run() {
System.out.println("线程开始执行");
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
线程同步
由于多个线程可能同时访问共享资源,因此线程同步是并发编程中的一个重要概念。Java 提供了多种同步机制,例如:
- 同步代码块(
synchronized
关键字) - 锁(Lock)
- 原子操作(如
AtomicInteger
)
以下是一个使用同步代码块同步访问共享资源的示例:
public class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public int getCount() {
return count;
}
}
并发工具类
Java 提供了丰富的并发工具类,例如:
java.util.concurrent.ExecutorService
:线程池java.util.concurrent.Semaphore
:信号量java.util.concurrent.CyclicBarrier
:循环屏障
以下是一个使用线程池执行任务的示例:
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class Main {
public static void main(String[] args) {
ExecutorService executor = Executors.newFixedThreadPool(5);
for (int i = 0; i < 10; i++) {
executor.submit(() -> {
System.out.println("任务 " + Thread.currentThread().getName() + " 执行");
});
}
executor.shutdown();
}
}
总结
Java 并发编程是一个复杂但重要的主题。通过掌握线程、同步机制和并发工具类,您可以编写高效、可靠的并发程序。