Java并发编程:线程池和同步工具使用示例
在Java中,线程池和同步工具是处理多线程任务和保证数据一致性的重要手段。以下是这两个方面的使用示例:
- 线程池
线程池可以重复使用已创建的线程,避免频繁地创建和销毁线程。
以下是一个简单的线程池创建并执行任务的例子:
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
public class ThreadPoolExample {
public static void main(String[] args) {
// 创建一个可容纳10个线程的线程池
ExecutorService executor = Executors.newFixedThreadPool(10);
// 提交任务到线程池
for (int i = 0; i < 50; i++) { // 每个任务执行10次
Runnable task = () -> {
System.out.println("Task " + i + " executed " + j);
try {
Thread.sleep(100); // 模拟耗时操作
} catch (InterruptedException e) {
e.printStackTrace();
}
};
executor.execute(task); // 提交任务到线程池
}
// 关闭线程池,不再提交新的任务
executor.shutdown();
try {
// 等待所有任务完成
executor.awaitTermination(5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
- 同步工具
在多线程环境中,同步工具(如synchronized关键字、ReentrantLock等)用于控制对共享资源的访问。
以下是一个使用synchronized关键字同步一个方法的例子:
public class SharedResourceExample {
private int sharedValue = 0;
public synchronized void incrementSharedValue() {
sharedValue++;
System.out.println("Incremented shared value: " + sharedValue);
}
public synchronized void decrementSharedValue() {
sharedValue--;
System.out.println("Decremented shared value: " + sharedValue);
}
}
在这个例子中,incrementSharedValue()
和 decrementSharedValue()
方法都使用了synchronized
关键字来保证在同一时刻只有一个线程可以访问这些方法。
还没有评论,来说两句吧...