Java 并发编程是一个重要且复杂的主题,涉及多个方面。以下是一些主要的并发知识点:
-
线程基础:
- 线程的创建与管理:
Thread
类和Runnable
接口。 - 线程生命周期:新建、就绪、运行、阻塞、死亡。
- 线程的创建与管理:
-
线程同步:
synchronized
关键字:方法同步和代码块同步。- 内部锁(Intrinsic Lock):每个对象都有一个锁。
volatile
关键字:确保变量的可见性。
-
高级同步机制:
- 显式锁:
Lock
接口和ReentrantLock
类。 - 读写锁:
ReadWriteLock
接口和ReentrantReadWriteLock
类。 - 条件变量:
Condition
接口。 - 信号量:
Semaphore
类。 - 倒计时器:
CountDownLatch
类。 - 栅栏:
CyclicBarrier
类。
- 显式锁:
-
并发集合:
ConcurrentHashMap
、CopyOnWriteArrayList
、CopyOnWriteArraySet
等。
-
线程通信:
wait()
、notify()
、notifyAll()
方法。- 管道流(Piped Streams)。
-
线程池:
Executor
接口及其实现:ThreadPoolExecutor
、ScheduledThreadPoolExecutor
等。Executors
工具类提供的工厂方法。
-
并发工具类:
Future
和Callable
接口。CompletableFuture
类。
-
原子操作:
AtomicInteger
、AtomicLong
、AtomicReference
等。LongAdder
和DoubleAdder
类。
-
Fork/Join 框架:
ForkJoinPool
类。RecursiveTask
和RecursiveAction
类。
-
并发设计模式:
- 生产者-消费者模式。
- 读者-写者模式。
- 单例模式(懒汉式、饿汉式、双重检查锁定)。
-
内存模型:
- Java 内存模型(Java Memory Model, JMM)。
- 可见性、原子性、有序性。
happens-before
规则。
-
死锁、活锁、饥饿:
- 死锁检测与预防。
- 活锁与饥饿的解决方法。
掌握这些知识点可以帮助你更好地理解和编写高效、安全的并发程序。