Skip to content

Commit eebc7a8

Browse files
committed
refactor: use neutral gid(com.example) and package name(fucking.concurrency.demo) instead of com.oldratlee
1 parent ba7ca00 commit eebc7a8

13 files changed

+41
-56
lines changed

README.md

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

7272
## 🍺 Update without synchronization cannot be read in another thread
7373

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

7676
### Demo description
7777

@@ -84,14 +84,14 @@ After the `main` thread field `stop` is `true`, the task thread continues to run
8484
### Quickly run
8585

8686
```bash
87-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.NoPublishDemo
87+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.NoPublishDemo
8888
```
8989

9090
## 🍺 Infinite loop of `HashMap`
9191

9292
This problem has been explained in many places.
9393

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

9696
### Demo description
9797

@@ -104,7 +104,7 @@ The main thread Block is determined by no continuous output, that is, the endles
104104
### Quickly run
105105

106106
```bash
107-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.HashMapHangDemo
107+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.HashMapHangDemo
108108
```
109109

110110
## 🍺 Combined state read invalid combination
@@ -118,7 +118,7 @@ Invalid combinations are combinations that have never been set.
118118
### Demo description
119119

120120
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.
121-
Demo class [`InvalidCombinationStateDemo`](src/main/java/com/oldratlee/fucking/concurrency/InvalidCombinationStateDemo.java).
121+
Demo class [`InvalidCombinationStateDemo`](src/main/java/fucking/concurrency/demo/InvalidCombinationStateDemo.java).
122122

123123
### Problem statement
124124

@@ -127,7 +127,7 @@ The second state read in the task thread is not twice the value of the first sta
127127
### Quickly run
128128

129129
```bash
130-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.InvalidCombinationStateDemo
130+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.InvalidCombinationStateDemo
131131
```
132132

133133
## 🍺 `long` variable read invalid value
@@ -136,7 +136,7 @@ An invalid value is a value that has never been set.
136136

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

139-
Demo class [`InvalidLongDemo`](src/main/java/com/oldratlee/fucking/concurrency/InvalidLongDemo.java).
139+
Demo class [`InvalidLongDemo`](src/main/java/fucking/concurrency/demo/InvalidLongDemo.java).
140140

141141
### Demo description
142142

@@ -149,12 +149,12 @@ In the task thread, a long variable whose upper 4 bytes and lower 4 bytes are di
149149
### Quickly run
150150

151151
```bash
152-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.InvalidLongDemo
152+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.InvalidLongDemo
153153
```
154154

155155
## 🍺 the result of concurrency count without synchronization is wrong
156156

157-
Demo class [`WrongCounterDemo`](src/main/java/com/oldratlee/fucking/concurrency/WrongCounterDemo.java).
157+
Demo class [`WrongCounterDemo`](src/main/java/fucking/concurrency/demo/WrongCounterDemo.java).
158158

159159
### Demo description
160160

@@ -167,15 +167,15 @@ The count value is incorrect.
167167
### Quickly run
168168

169169
```bash
170-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.WrongCounterDemo
170+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.WrongCounterDemo
171171
```
172172

173173
## 🍺 Synchronization on mutable fields
174174

175175
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.
176176
\# For problem analysis, see the article [Synchronization on mutable fields](http://www.ibm.com/developerworks/library/j-concurrencybugpatterns/#N100E7).
177177

178-
Demo class [`SynchronizationOnMutableFieldDemo`](src/main/java/com/oldratlee/fucking/concurrency/SynchronizationOnMutableFieldDemo.java).
178+
Demo class [`SynchronizationOnMutableFieldDemo`](src/main/java/fucking/concurrency/demo/SynchronizationOnMutableFieldDemo.java).
179179

180180
### Demo description
181181

@@ -188,14 +188,14 @@ The final count of Listeners is incorrect.
188188
### Quickly run
189189

190190
```bash
191-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.SynchronizationOnMutableFieldDemo
191+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.SynchronizationOnMutableFieldDemo
192192
```
193193

194194
## 🍺 Deadlock caused by the symmetric locks
195195

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

198-
Demo class [`SymmetricLockDeadlockDemo`](src/main/java/com/oldratlee/fucking/concurrency/SymmetricLockDeadlockDemo.java).
198+
Demo class [`SymmetricLockDeadlockDemo`](src/main/java/fucking/concurrency/demo/SymmetricLockDeadlockDemo.java).
199199

200200
### Demo description
201201

@@ -208,14 +208,14 @@ Task thread deadlocked.
208208
### Quickly run
209209

210210
```bash
211-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.SymmetricLockDeadlockDemo
211+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.SymmetricLockDeadlockDemo
212212
```
213213

214214
## 🍺 Livelock caused by reentrant locks
215215

216216
\# For a problem description, see the paragraph about livelocks [in this article](https://www.baeldung.com/cs/deadlock-livelock-starvation#livelock)
217217

218-
Demo class [`ReentrantLockLivelockDemo`](src/main/java/com/oldratlee/fucking/concurrency/ReentrantLockLivelockDemo.java).
218+
Demo class [`ReentrantLockLivelockDemo`](src/main/java/fucking/concurrency/demo/ReentrantLockLivelockDemo.java).
219219

220220
### Demo description
221221

@@ -230,5 +230,5 @@ this is a livelock.
230230
### Quickly run
231231

232232
```bash
233-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.ReentrantLockLivelockDemo
233+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.ReentrantLockLivelockDemo
234234
```

docs/zh-CN/README.md

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

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

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

7676
### Demo说明
7777

@@ -84,14 +84,14 @@ Demo类[`NoPublishDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/N
8484
### 快速运行
8585

8686
```bash
87-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.NoPublishDemo
87+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.NoPublishDemo
8888
```
8989

9090
## 🍺 `HashMap`的死循环
9191

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

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

9696
### Demo说明
9797

@@ -104,7 +104,7 @@ Demo类[`HashMapHangDemo`](../../src/main/java/com/oldratlee/fucking/concurrency
104104
### 快速运行
105105

106106
```bash
107-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.HashMapHangDemo
107+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.HashMapHangDemo
108108
```
109109

110110
## 🍺 组合状态读到无效组合
@@ -116,7 +116,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.HashMap
116116
### Demo说明
117117

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

121121
### 问题说明
122122

@@ -125,7 +125,7 @@ Demo类[`InvalidCombinationStateDemo`](../../src/main/java/com/oldratlee/fucking
125125
### 快速运行
126126

127127
```bash
128-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.InvalidCombinationStateDemo
128+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.InvalidCombinationStateDemo
129129
```
130130

131131
## 🍺 `long`变量读到无效值
@@ -134,7 +134,7 @@ mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.Invalid
134134

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

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

139139
### Demo说明
140140

@@ -147,12 +147,12 @@ Demo类[`InvalidLongDemo`](../../src/main/java/com/oldratlee/fucking/concurrency
147147
### 快速运行
148148

149149
```bash
150-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.InvalidLongDemo
150+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.InvalidLongDemo
151151
```
152152

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

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

157157
### Demo说明
158158

@@ -165,15 +165,15 @@ Demo类[`WrongCounterDemo`](../../src/main/java/com/oldratlee/fucking/concurrenc
165165
### 快速运行
166166

167167
```bash
168-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.WrongCounterDemo
168+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.WrongCounterDemo
169169
```
170170

171171
## 🍺 在易变域上的同步
172172

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类[`SynchronizationOnMutableFieldDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/SynchronizationOnMutableFieldDemo.java)
176+
Demo类[`SynchronizationOnMutableFieldDemo`](../../src/main/java/fucking/concurrency/demo/SynchronizationOnMutableFieldDemo.java)
177177

178178
### Demo说明
179179

@@ -186,13 +186,13 @@ Demo类[`SynchronizationOnMutableFieldDemo`](../../src/main/java/com/oldratlee/f
186186
### 快速运行
187187

188188
```bash
189-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.SynchronizationOnMutableFieldDemo
189+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.SynchronizationOnMutableFieldDemo
190190
```
191191

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类[`SymmetricLockDeadlockDemo`](../../src/main/java/com/oldratlee/fucking/concurrency/SymmetricLockDeadlockDemo.java)
195+
Demo类[`SymmetricLockDeadlockDemo`](../../src/main/java/fucking/concurrency/demo/SymmetricLockDeadlockDemo.java)
196196

197197
### Demo说明
198198

@@ -205,7 +205,7 @@ Demo类[`SymmetricLockDeadlockDemo`](../../src/main/java/com/oldratlee/fucking/c
205205
### 快速运行
206206

207207
```bash
208-
mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.SymmetricLockDeadlockDemo
208+
mvn compile exec:java -Dexec.mainClass=fucking.concurrency.demo.SymmetricLockDeadlockDemo
209209
```
210210

211211
## 一些并发的问题讨论和资料

pom.xml

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
33
<modelVersion>4.0.0</modelVersion>
44

5-
<groupId>com.oldratlee</groupId>
5+
<groupId>com.example</groupId>
66
<artifactId>fucking-java-concurrency</artifactId>
77
<version>0.0.1-SNAPSHOT</version>
88
<packaging>jar</packaging>
@@ -11,18 +11,6 @@
1111
<description>🎏 Simple showcases of java concurrency problems, seeing 🙈 is believing 🐵</description>
1212
<inceptionYear>2014</inceptionYear>
1313

14-
<developers>
15-
<developer>
16-
<name>Jerry Lee</name>
17-
<id>oldratlee</id>
18-
<email>oldratlee(AT)gmail(DOT)com</email>
19-
<roles>
20-
<role>Developer</role>
21-
</roles>
22-
<timezone>+8</timezone>
23-
</developer>
24-
</developers>
25-
2614
<licenses>
2715
<license>
2816
<name>Apache 2</name>
@@ -38,9 +26,6 @@
3826
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
3927
</properties>
4028

41-
<dependencies>
42-
</dependencies>
43-
4429
<build>
4530
<plugins>
4631
<!--

src/main/java/com/oldratlee/fucking/concurrency/HashMapHangDemo.java renamed to src/main/java/fucking/concurrency/demo/HashMapHangDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oldratlee.fucking.concurrency;
1+
package fucking.concurrency.demo;
22

33
import java.util.HashMap;
44
import java.util.Map;

src/main/java/com/oldratlee/fucking/concurrency/InconsistentReadDemo.java renamed to src/main/java/fucking/concurrency/demo/InconsistentReadDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oldratlee.fucking.concurrency;
1+
package fucking.concurrency.demo;
22

33
/**
44
* @author Jerry Lee (oldratlee at gmail dot com)
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oldratlee.fucking.concurrency;
1+
package fucking.concurrency.demo;
22

33
import java.util.Random;
44

src/main/java/com/oldratlee/fucking/concurrency/InvalidLongDemo.java renamed to src/main/java/fucking/concurrency/demo/InvalidLongDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oldratlee.fucking.concurrency;
1+
package fucking.concurrency.demo;
22

33
/**
44
* @author Jerry Lee(oldratlee at gmail dot com)

src/main/java/com/oldratlee/fucking/concurrency/NoPublishDemo.java renamed to src/main/java/fucking/concurrency/demo/NoPublishDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oldratlee.fucking.concurrency;
1+
package fucking.concurrency.demo;
22

33
/**
44
* <a href="https://hllvm-group.iteye.com/group/topic/34932">请问R大 有没有什么工具可以查看正在运行的类的c/汇编代码</a>提到了<b>代码提升</b>的问题。

src/main/java/com/oldratlee/fucking/concurrency/ReentrantLockLivelockDemo.java renamed to src/main/java/fucking/concurrency/demo/ReentrantLockLivelockDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oldratlee.fucking.concurrency;
1+
package fucking.concurrency.demo;
22

33
import java.util.concurrent.TimeUnit;
44
import java.util.concurrent.locks.Lock;

src/main/java/com/oldratlee/fucking/concurrency/SymmetricLockDeadlockDemo.java renamed to src/main/java/fucking/concurrency/demo/SymmetricLockDeadlockDemo.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.oldratlee.fucking.concurrency;
1+
package fucking.concurrency.demo;
22

33
/**
44
* @author Jerry Lee (oldratlee at gmail dot com)

0 commit comments

Comments
 (0)