并发编程是现代软件开发中的重要概念,它能显著提升程序性能。下面为你系统梳理并发的基本概念、常用操作和并发容器。
一、理解并发与并行
并发 指在单核CPU上,通过时间片轮转,在极短时间内交替执行多个任务,给人“同时运行”的错觉。并行 则是在多核CPU上,任务真正同时执行。
核心概念还包括:
线程:操作系统调度的最小单位,共享进程资源
进程:程序的一次执行,拥有独立的内存空间
同步:任务按顺序依次执行
异步:任务发起后不等结果,通过回调等方式获取结果
二、 并发操作的核心机制
1. 线程创建与管理
继承Thread类:重写run()方法
实现Runnable接口:更灵活,推荐使用
线程池:复用线程,避免频繁创建销毁的开销
2. 线程同步与通信
synchronized关键字:保证同一时刻只有一个线程访问临界资源
Lock接口:更灵活的锁机制,如ReentrantLock
volatile关键字:保证变量的可见性
wait()/notify():线程间通信机制
3. 高级并发工具
Java的java.util.concurrent包提供了强大的并发工具:
CountDownLatch:等待多个线程完成
CyclicBarrier:让一组线程互相等待
Semaphore:控制同时访问特定资源的线程数量
三、重要并发容器
并发容器通过精细化的锁策略或无锁编程,在保证线程安全的同时提升性能。