Skip to content

KobeFeng/fucking-java-concurrency

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

fucking-java-concurrency

通过Demo演示出Java中并发问题。

可以观察到的现象 比 说说的并发原则 更直观更可信。

无同步的修改在另一个线程中读不到

Democom.oldratlee.fucking.concurrency.NoPublishDemo

Demo说明

主线程中设置属性stoptrue,以控制main启动的任务线程退出。

问题说明

在主线程属性stoptrue后,但任务线程持续运行,任务线程中读不到新值。

快速运行

mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.NoPublishDemo

long变量读到无效值

long变量读写不是原子的,会分为2次4字节操作。
Democom.oldratlee.fucking.concurrency.InvalidLongDemo

Demo说明

主线程修改long变量,每次写的值的高4字节和低4字节是一样的。在任务线程中读取long变量。

问题说明

任务线程中读到了高4字节和低4字节不一样的long变量,即是无效值(从来没有设置过的值)。

快速运行

mvn compile exec:java -Dexec.mainClass=com.oldratlee.fucking.concurrency.InvalidLongDemo

About

show case of java concurrency problem

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published