# concurrency **Repository Path**: thank-study/concurrency ## Basic Information - **Project Name**: concurrency - **Description**: java concurrency - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-07-03 - **Last Updated**: 2026-03-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # concurrency Java 并发编程示例项目 ## 项目介绍 concurrency 是一个 Java 并发编程学习示例项目,涵盖了 Java 并发的核心技术,包括: - 同步原语(AQS)的使用 - 原子操作 - 并发容器 - 线程同步 - 锁机制 - 线程池 - ThreadLocal - 单例模式 - 不可变对象 - 发布与逸出 ## 技术栈 - Java - Spring Boot - Jedis (Redis 客户端) - Lombok ## 项目结构 ``` src/main/java/com/thank/concurrency/ ├── ConcurrencyApplication.java # Spring Boot 启动类 ├── HttpFilter.java # 请求过滤器 ├── HttpInterceptor.java # 请求拦截器 ├── annoations/ # 自定义注解 │ ├── NotRecommend.java │ ├── NotThreadSafe.java │ ├── Recommend.java │ └── ThreadSafe.java └── samples/ # 示例代码 ├── aqs/ # AQS 同步器示例 │ ├── CountDownLatchExample1.java │ ├── CountDownLatchExample2.java │ ├── CyclicBarrierExample1.java │ ├── CyclicBarrierExample2.java │ ├── CyclicBarrierExample3.java │ ├── SemaphoreExample1.java │ ├── SemaphoreExample2.java │ ├── SemaphoreExample3.java │ └── SemaphoreExample4.java ├── aqsExtends/ # AQS 扩展示例 │ ├── ForkJoinTaskExample.java │ ├── FutureExample.java │ └── FutureTaskExample.java ├── atomic/ # 原子操作示例 │ ├── ABAExample.java │ ├── AtomicExample1.java │ ├── AtomicExample2.java │ ├── AtomicExample3.java │ ├── AtomicExample4.java │ ├── AtomicExample5.java │ ├── AtomicExample6.java │ └── AtomicExample7.java ├── cache/ # Redis 缓存示例 │ ├── CacheController.java │ ├── RedisClient.java │ └── RedisConfig.java ├── commonUnsafe/ # 常见非线程安全类 │ ├── ArrayListExample.java │ ├── DateFormatExample1.java │ ├── DateFormatExample2.java │ ├── HashMapExample.java │ ├── HashSetExample.java │ ├── StringExample1.java │ └── StringExample2.java ├── concurrentContainer/ # 并发容器示例 │ ├── ConcurrentHashMapExample.java │ ├── ConcurrentSkipListMapExample.java │ ├── ConcurrentSkipListSetExample.java │ ├── CopyOnWriteArrayListExample.java │ └── CopyOnWriteArraySetExample.java ├── count/ # 计数器示例 │ ├── CountExample1.java │ ├── CountExample2.java │ ├── CountExample3.java │ └── CountExample4.java ├── deadLock/ # 死锁示例 │ └── DeadLockExample.java ├── immutable/ # 不可变对象示例 │ ├── ImmutableExample1.java │ ├── ImmutableExample2.java │ └── ImmutableExample3.java ├── lock/ # 锁机制示例 │ ├── LockExample1.java │ ├── LockExample2.java │ ├── LockExample3.java │ ├── LockExample4.java │ ├── LockExample5.java │ └── LockExample6.java ├── publish/ # 对象发布与逸出 │ ├── Escape.java │ ├── EscapeAnalysis1.java │ ├── EscapeAnalysis2.java │ ├── Resource.java │ └── UnsafePublish.java ├── singleton/ # 单例模式示例 │ ├── SingletonExample1.java │ ├── SingletonExample2.java │ ├── SingletonExample3.java │ ├── SingletonExample4.java │ ├── SingletonExample5.java │ ├── SingletonExample6.java │ └── SingletonExample7.java ├── sync/ # synchronized 示例 │ ├── SynchronizedExample1.java │ └── SynchronizedExample2.java ├── syncContainer/ # 同步容器示例 │ ├── CollectionsExample1.java │ ├── CollectionsExample2.java │ ├── CollectionsExample3.java │ ├── HashTableExample.java │ ├── VectorExample1.java │ ├── VectorExample2.java │ └── VectorExample3.java ├── threadLocal/ # ThreadLocal 示例 │ ├── RequestHolder.java │ └── ThreadLocalController.java └── threadPool/ # 线程池示例 ├── ThreadPoolExample1.java ├── ThreadPoolExample2.java ├── ThreadPoolExample3.java └── ThreadPoolExample4.java ``` ## 自定义注解 项目定义了四个用于标注类特性的注解: - `@ThreadSafe` - 标注线程安全的类 - `@NotThreadSafe` - 标注非线程安全的类 - `@Recommend` - 推荐使用的实现 - `@NotRecommend` - 不推荐使用的实现 ## 运行方式 ```bash # 打包项目 mvn clean package # 运行项目 mvn spring-boot:run ``` ## 配置说明 在 `application.properties` 中配置 Redis 连接信息: ```properties jedis.host=localhost jedis.port=6379 ``` ## 示例分类 ### 1. AQS 同步器 - **CountDownLatch**: 倒计时门闩 - **CyclicBarrier**: 循环栅栏 - **Semaphore**: 信号量 ### 2. 原子操作 - AtomicInteger/AtomicLong/LongAdder - AtomicReference - AtomicIntegerFieldUpdater - AtomicBoolean - AtomicStampedReference (解决 ABA 问题) ### 3. 并发容器 - ConcurrentHashMap - ConcurrentSkipListMap/Set - CopyOnWriteArrayList/Set ### 4. 锁机制 - synchronized - ReentrantLock - ReentrantReadWriteLock - StampedLock ### 5. 线程池 - Executors 工厂方法 - ThreadPoolExecutor 配置 ### 6. 单例模式 - 饿汉式、懒汉式 - 双重检查锁定 - 静态内部类 - 枚举式 ## 学习建议 1. 从基本的同步机制(synchronized、Lock)开始学习 2. 了解原子操作和并发容器的区别 3. 掌握线程池的使用和配置 4. 理解死锁的产生条件和避免方法 5. 学习单例模式和不可变对象的线程安全性