@@ -39,20 +39,18 @@ WeChat:Zed-RD [
43
+ * [ 代码示例] ( https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/ visibility/Visibility.java )
45
44
![ 单核CPU] ( media/15603316282468/a07e8182819e2b260ce85b2167d446da.png )
46
45
![ 多核CPU] ( media/15603316282468/e2aa76928b2bc135e08e7590ca36e0ea.png )
47
46
48
47
49
48
## 线程切换带来的原子性问题
50
49
* 一个或者多个操作在 CPU 执行的过程中不被中断的特性称为** 原子性**
51
-
52
50
* ** 时间片** 概念
53
51
* 线程切换 ---〉提升cpu利用率。 tips: Unix 系统因支持多进程分时复用而出名。
54
- * 线程切换[ 代码示例] ( https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/contentSwitch /ContentSwitchTest.java ) 。
55
- * 原子问题[ 代码示例] ( https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/atomic/AtomicCounter.java )
52
+ * 线程切换[ 代码示例] ( https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/contentswitch /ContentSwitchTest.java ) 。
53
+ * 原子问题[ 代码示例] ( https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/ atomic/AtomicCounter.java )
56
54
57
55
![ 254b129b145d80e9bb74123d6e620efb] ( media/15603316282468/254b129b145d80e9bb74123d6e620efb.png )
58
56
* count+=1 操作分析
@@ -94,7 +92,7 @@ public class Singleton {
94
92
## 按需禁用缓存以及编译优化 [ 代码来源] ( http://www.cs.umd.edu/~pugh/java/memoryModel/jsr-133-faq.html )
95
93
96
94
* ## volatile
97
- * [ 代码示例] ( https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/volatileExample /VolatileExample.java )
95
+ * [ 代码示例] ( https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/volatilecase /VolatileExample.java )
98
96
99
97
* ## synchronized
100
98
@@ -134,9 +132,9 @@ public class Singleton {
134
132
* 偏向锁
135
133
* 轻量级锁
136
134
* 重量级锁
137
-
138
135
139
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/synchronizedEx/SynchronizedExample.java)
136
+
137
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/synchronizedcase/SynchronizedExample.java)
140
138
141
139
```
142
140
class X {
@@ -158,7 +156,7 @@ public class Singleton {
158
156
159
157
## final
160
158
161
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/finalEx /FinalExample.java)
159
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/finalcase /FinalExample.java)
162
160
* 修饰变量时,初衷是告诉编译器:这个变量生而不变,非immutable,即只能表示对象引用不能被赋值(例如List);
163
161
* 修饰方法则方法不能被重写
164
162
* 修饰类则不能被扩展继承。
@@ -238,7 +236,7 @@ public class Singleton {
238
236
239
237
-------
240
238
# 4.JAVA线程的生命周期
241
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/threadState /ThreadState.java)
239
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/threadstate /ThreadState.java)
242
240
243
241
## 通用的线程生命周期
244
242
* 初始状态
@@ -484,7 +482,7 @@ class Semaphore{
484
482
### 使用方法
485
483
#### 实现互斥
486
484
#### 实现限流器(Semaphore 可以允许多个线程访问一个临界区)
487
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/semaphore/SemaphoreEx.java)
485
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/ semaphore/SemaphoreEx.java)
488
486
489
487
490
488
-------
@@ -495,16 +493,16 @@ class Semaphore{
495
493
* 只允许一个线程写共享变量
496
494
* 如果一个写线程正在执行写操作,此时禁止读线程读共享变量
497
495
498
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/readWriteLock /CacheByReadWriteLock.java)
496
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/readwritelock /CacheByReadWriteLock.java)
499
497
500
498
## StampedLock 加上乐观读(无锁)
501
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/readWriteLock /StampedLockEx.java)
499
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/readwritelock /StampedLockEx.java)
502
500
503
501
## CountDownLatch
504
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/countDownLatchEx /CountDownLatchEx.java)
502
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/countdownlatch /CountDownLatchEx.java)
505
503
506
504
## CyclicBarrier
507
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/cyclicBarrierEx /CyclicBarrierEx.java)
505
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/cyclicbarrier /CyclicBarrierEx.java)
508
506
509
507
510
508
@@ -581,7 +579,7 @@ CopyOnWriteArraySet、ConcurrentSkipListSet
581
579
# 11. 原子类
582
580
583
581
* 无锁方案实现原理(Compare And Swap)
584
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/atomic/SimulatedCAS .java)
582
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/ atomic/SimulatedCompareAndSwap .java)
585
583
* 概览图
586
584

587
585
@@ -640,7 +638,7 @@ accumulateAndGet(x,func)
640
638
* 而创建一个线程,却需要调用操作系统内核的 API,然后操作系统要为线程分配一系列的资源,这个成本就很高了。
641
639
642
640
## 线程池是一种生产者-消费者模式(非一般意义池化资源)
643
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/threadPool/MyThreadPool.java)
641
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/ threadPool/MyThreadPool.java)
644
642
* Java ThreadPoolExecutor
645
643
646
644
```
@@ -713,7 +711,7 @@ get(long timeout, TimeUnit unit);
713
711
714
712
715
713
## FutureTask工具类(实现了RunnableFuture而它继承了Runnable和Future接口)
716
- * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/futureTask /FutureTaskEx.java)
714
+ * [代码示例](https://github.com/Fadezed/concurrency/blob/master/src/main/java/com/example/concurrency/features/futuretask /FutureTaskEx.java)
717
715
* 构造函数类似线程池submit
718
716
719
717
```
0 commit comments