Skip to content

Commit ea226ff

Browse files
committed
docs: improve README
1 parent 7484de7 commit ea226ff

File tree

2 files changed

+14
-14
lines changed

2 files changed

+14
-14
lines changed

README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ Examples of concurrency problems you encountered in development are welcome to p
6767

6868
## 🍺 Update without synchronization cannot be read in another thread
6969

70-
Demo class [`com.oldratlee.fucking.concurrency.NoPublishDemo`](src/main/java/com/oldratlee/fucking/concurrency/NoPublishDemo.java).
70+
Demo class [`NoPublishDemo`](src/main/java/com/oldratlee/fucking/concurrency/NoPublishDemo.java).
7171

7272
### Demo description
7373

@@ -87,7 +87,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.NoPubli
8787

8888
This problem has been explained in many places.
8989

90-
The Demo class [`com.oldratlee.fucking.concurrency.HashMapHangDemo`](src/main/java/com/oldratlee/fucking/concurrency/HashMapHangDemo.java) can reproduce this problem.
90+
The Demo class [`HashMapHangDemo`](src/main/java/com/oldratlee/fucking/concurrency/HashMapHangDemo.java) can reproduce this problem.
9191

9292
### Demo description
9393

@@ -114,7 +114,7 @@ Invalid combinations are combinations that have never been set.
114114
### Demo description
115115

116116
The main thread modifies multiple states. For the convenience of checking, each write has a fixed relationship: the second state is twice the value of the first state. Read multiple states in a task thread.
117-
Demo class com.oldratlee.fucking.concurrency.InvalidCombinationStateDemo.
117+
Demo class [`InvalidCombinationStateDemo`](src/main/java/com/oldratlee/fucking/concurrency/InvalidCombinationStateDemo.java).
118118

119119
### Problem statement
120120

@@ -132,7 +132,7 @@ An invalid value is a value that has never been set.
132132

133133
Reading and writing of `long` variables is not atomic and will be divided into two 4-byte operations.
134134

135-
Demo class [`com.oldratlee.fucking.concurrency.InvalidLongDemo`](src/main/java/com/oldratlee/fucking/concurrency/InvalidLongDemo.java).
135+
Demo class [`InvalidLongDemo`](src/main/java/com/oldratlee/fucking/concurrency/InvalidLongDemo.java).
136136

137137
### Demo description
138138

@@ -150,7 +150,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.Invalid
150150

151151
## 🍺 the result of concurrency count without synchronization is wrong
152152

153-
Demo class [`com.oldratlee.fucking.concurrency.WrongCounterDemo`](src/main/java/com/oldratlee/fucking/concurrency/WrongCounterDemo.java).
153+
Demo class [`WrongCounterDemo`](src/main/java/com/oldratlee/fucking/concurrency/WrongCounterDemo.java).
154154

155155
### Demo description
156156

@@ -171,7 +171,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.WrongCo
171171
It is common to see synchronization code on a volatile field, and the person who write it will naturally feel that this is safe and correct.
172172
\# For problem analysis, see the article [Synchronization on mutable fields](http://www.ibm.com/developerworks/library/j-concurrencybugpatterns/#N100E7).
173173

174-
Demo class [`com.oldratlee.fucking.concurrency.SynchronizationOnMutableFieldDemo`](src/main/java/com/oldratlee/fucking/concurrency/SynchronizationOnMutableFieldDemo.java).
174+
Demo class [`SynchronizationOnMutableFieldDemo`](src/main/java/com/oldratlee/fucking/concurrency/SynchronizationOnMutableFieldDemo.java).
175175

176176
### Demo description
177177

@@ -191,7 +191,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.Synchro
191191

192192
\# For problem analysis, see the article [Synchronization on mutable fields](http://www.ibm.com/developerworks/library/j-concurrencybugpatterns/#N101C1)
193193

194-
Demo class [`com.oldratlee.fucking.concurrency.SymmetricLockDeadlockDemo`](src/main/java/com/oldratlee/fucking/concurrency/SymmetricLockDeadlockDemo.java).
194+
Demo class [`SymmetricLockDeadlockDemo`](src/main/java/com/oldratlee/fucking/concurrency/SymmetricLockDeadlockDemo.java).
195195

196196
### Demo description
197197

docs/zh-CN/README.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@
7171

7272
## 🍺 无同步的修改在另一个线程中会读不到
7373

74-
Demo类[`com.oldratlee.fucking.concurrency.NoPublishDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/NoPublishDemo.java)
74+
Demo类[`NoPublishDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/NoPublishDemo.java)
7575

7676
### Demo说明
7777

@@ -91,7 +91,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.NoPubli
9191

9292
这个问题在[疫苗:Java HashMap的死循环](http://coolshell.cn/articles/9606.html)等多个地方都有讲解。
9393

94-
Demo类[`com.oldratlee.fucking.concurrency.HashMapHangDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/HashMapHangDemo.java),可以复现这个问题。
94+
Demo类[`HashMapHangDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/HashMapHangDemo.java),可以复现这个问题。
9595

9696
### Demo说明
9797

@@ -116,7 +116,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.HashMap
116116
### Demo说明
117117

118118
主线程修改多个状态,为了方便检查,每次写入有个固定的关系:第2个状态是第1个状态值的2倍。在任务线程中读取多个状态。
119-
Demo类[`com.oldratlee.fucking.concurrency.InvalidCombinationStateDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/InvalidCombinationStateDemo.java)
119+
Demo类[`InvalidCombinationStateDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/InvalidCombinationStateDemo.java)
120120

121121
### 问题说明
122122

@@ -134,7 +134,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.Invalid
134134

135135
`long`变量读写不是原子的,会分为2次4字节操作。
136136

137-
Demo类[`com.oldratlee.fucking.concurrency.InvalidLongDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/InvalidLongDemo.java)
137+
Demo类[`InvalidLongDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/InvalidLongDemo.java)
138138

139139
### Demo说明
140140

@@ -152,7 +152,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.Invalid
152152

153153
## 🍺 无同步的并发计数结果不对
154154

155-
Demo类[`com.oldratlee.fucking.concurrency.WrongCounterDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/WrongCounterDemo.java)
155+
Demo类[`WrongCounterDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/WrongCounterDemo.java)
156156

157157
### Demo说明
158158

@@ -173,7 +173,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.WrongCo
173173
常看到在易变域上的同步代码,并且写的同学会很自然觉得这样是安全和正确的。
174174
\# 问题分析见文章链接:[在易变域上的同步](http://www.ibm.com/developerworks/cn/java/j-concurrencybugpatterns/#N100DA),对应的英文文章:[Synchronization on mutable fields](http://www.ibm.com/developerworks/library/j-concurrencybugpatterns/#N100E7)
175175

176-
Demo类[`com.oldratlee.fucking.concurrency.SynchronizationOnMutableFieldDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/SynchronizationOnMutableFieldDemo.java)
176+
Demo类[`SynchronizationOnMutableFieldDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/SynchronizationOnMutableFieldDemo.java)
177177

178178
### Demo说明
179179

@@ -192,7 +192,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.Synchro
192192
## 🍺 对称锁死锁
193193

194194
\# 问题分析见文章链接:[对称锁死锁](http://www.ibm.com/developerworks/cn/java/j-concurrencybugpatterns/#N101B4),对应的英文文章:[Synchronization on mutable fields](http://www.ibm.com/developerworks/library/j-concurrencybugpatterns/#N101C1)
195-
Demo类[`com.oldratlee.fucking.concurrency.SymmetricLockDeadlockDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/SymmetricLockDeadlockDemo.java)
195+
Demo类[`SymmetricLockDeadlockDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/SymmetricLockDeadlockDemo.java)
196196

197197
### Demo说明
198198

0 commit comments

Comments
 (0)