Skip to content

Commit 5a757be

Browse files
committed
[update] update README of mutithread, correct some spell mistakes of synchronized package
1 parent b508f63 commit 5a757be

File tree

9 files changed

+71
-32
lines changed

9 files changed

+71
-32
lines changed

java-multithread/README.md

Lines changed: 59 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,73 @@
22

33
知识点的文字梳理请参考这篇文章:[java多线程核心技术梳理](http://blog.csdn.net/h3243212/article/details/51180173)
44

5-
下面对该模块的几个部分作说明:
5+
下面对该模块的几个包作说明:
66

77
## meet
88

99
该部分是一些简单的基础知识的展示
1010

1111
- [printMain.java](src/main/java/com/brianway/learning/java/multithread/meet/printMain.java):打印当前线程名称
1212
- [Run.java](src/main/java/com/brianway/learning/java/multithread/meet/Run.java):非线程安全的数据共享
13-
- [Run2_StartVsRun.java](src/main/java/com/brianway/learning/java/multithread/meet/Run2_StartVsRun.java):run()和start()的区别
14-
- [Run3_getName.java](src/main/java/com/brianway/learning/java/multithread/meet/Run3_getName.java):this.getName()!=Thread.currentThread().getName(),这是两个概念
15-
- [Run4_isAlive01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run4_isAlive01.java):isAlive()
16-
- [Run5_isAlive02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run5_isAlive02.java):isAlive()
17-
- [Run6_StartVsRun02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run6_StartVsRun02.java):run()同步执行,start()异步执行
13+
- [Run2_StartVsRun.java](src/main/java/com/brianway/learning/java/multithread/meet/Run2_StartVsRun.java):`run()``start()` 的区别
14+
- [Run3_getName.java](src/main/java/com/brianway/learning/java/multithread/meet/Run3_getName.java):`this.getName()!=Thread.currentThread().getName()`,这是两个概念
15+
- [Run4_isAlive01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run4_isAlive01.java):`isAlive()`
16+
- [Run5_isAlive02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run5_isAlive02.java):`isAlive()`
17+
- [Run6_StartVsRun02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run6_StartVsRun02.java):`run()` 同步执行,`start()` 异步执行
1818
- [Run7_interrupt01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run7_interrupt01.java):停止线程
1919
- [Run8_interrupted01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run8_interrupted01.java):判断线程是否停止状态,测试当前线程是否已经中断
20-
- [Run9_interrupted02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run9_interrupted02.java):线程的中断状态由interrupted()清除
21-
- [Run10_isInterrupted.java](src/main/java/com/brianway/learning/java/multithread/meet/Run10_isInterrupted.java):isInterrupted(),不清除状态标记
22-
- [Run11_sleepAndinterrupt01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run11_sleepAndinterrupt01.java):睡眠中停止,先进入的sleep,再interrupt()
23-
- [Run12_sleepAndinterrupt02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run12_sleepAndinterrupt02.java):先interrupt(),再进入sleep(),直接进异常
24-
- [Run13_suspendAndresume01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run13_suspendAndresume01.java):暂停线程,suspend()与resume()
25-
- [Run14_suspendAndresume02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run14_suspendAndresume02.java):suspend()与resume()的缺点:独占
26-
- [Run15_suspendAndresume03.java](src/main/java/com/brianway/learning/java/multithread/meet/Run15_suspendAndresume03.java):suspend()独占锁问题,println()
27-
- [Run16_yield.java](src/main/java/com/brianway/learning/java/multithread/meet/Run16_yield.java):测试yield()
20+
- [Run9_interrupted02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run9_interrupted02.java):线程的中断状态由 `interrupted()` 清除
21+
- [Run10_isInterrupted.java](src/main/java/com/brianway/learning/java/multithread/meet/Run10_isInterrupted.java):`isInterrupted()`,不清除状态标记
22+
- [Run11_sleepAndinterrupt01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run11_sleepAndinterrupt01.java):睡眠中停止,先进入的 `sleep()`,再 `interrupt()`
23+
- [Run12_sleepAndinterrupt02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run12_sleepAndinterrupt02.java):`interrupt()`,再进入 `sleep()`,直接进异常
24+
- [Run13_suspendAndresume01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run13_suspendAndresume01.java):暂停线程,`suspend()``resume()`
25+
- [Run14_suspendAndresume02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run14_suspendAndresume02.java):`suspend()``resume()` 的缺点:独占
26+
- [Run15_suspendAndresume03.java](src/main/java/com/brianway/learning/java/multithread/meet/Run15_suspendAndresume03.java):`suspend()` 独占锁问题,`println()`
27+
- [Run16_yield.java](src/main/java/com/brianway/learning/java/multithread/meet/Run16_yield.java):测试 `yield()`
2828
- [Run17_priority01.java](src/main/java/com/brianway/learning/java/multithread/meet/Run17_priority01.java):线程优先级的继承性
2929
- [Run18_priority02.java](src/main/java/com/brianway/learning/java/multithread/meet/Run18_priority02.java):优先级具有规则性
30+
31+
## synchronize
32+
33+
- [example1](src/main/java/com/brianway/learning/java/multithread/synchronize/example1)
34+
- [Run1_local.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example1/Run1_local.java):方法内局部变量则不存在“非线程安全”问题
35+
- [example2](src/main/java/com/brianway/learning/java/multithread/synchronize/example2)
36+
- [Run2_private01.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example2/Run2_private01.java):实例变量非线程安全
37+
- [Run2_twoObject.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example2/Run2_twoObject.java):多个对象多个锁
38+
- [example3](src/main/java/com/brianway/learning/java/multithread/synchronize/example3)
39+
- [Run3_synchronized01.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example3/Run3_synchronized01.java):`synchronized` 方法与锁对象
40+
- [example4](src/main/java/com/brianway/learning/java/multithread/synchronize/example4)
41+
- [Run4_synchronized01.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example4/Run4_synchronized01.java):两个线程访问同一个对象的不同方法,线程 B 可异步调用非 `synchronized` 类型方法
42+
- [example5](src/main/java/com/brianway/learning/java/multithread/synchronize/example5)
43+
- [Run5_lockRein.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example5/Run5_lockRein.java):`synchronized` 锁重入,支持继承
44+
- [example6](src/main/java/com/brianway/learning/java/multithread/synchronize/example6)
45+
- [Run6_exception.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example6/Run6_exception.java):出现异常,锁自动释放
46+
- [example7](src/main/java/com/brianway/learning/java/multithread/synchronize/example7)
47+
- [Run7_synNotExtends.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example7/Run7_synNotExtends.java):同步不具继承性
48+
- [example8](src/main/java/com/brianway/learning/java/multithread/synchronize/example8)
49+
- [Run8_synchronized01.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example8/Run8_synchronized01.java):`synchronized` 方法的弊端
50+
- [Run8_synchronized02.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example8/Run8_synchronized02.java):同步代码块解决同步方法的弊端
51+
- [example9](src/main/java/com/brianway/learning/java/multithread/synchronize/example9)
52+
- [Run9_synchronized01.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example9/Run9_synchronized01.java):当多个线程同时执行`synchronized(x){}`同步代码块时呈现效果
53+
- [Run9_synchronized01_twoObjects.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example9/Run9_synchronized01_twoObjects.java):不同的“对象监视器”
54+
- [Run9_synchronized02.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example9/Run9_synchronized02.java):当其他线程执行 x 对象中 `synchronized` 同步方法时呈同步效果
55+
- [Run9_synchronized03.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example9/Run9_synchronized03.java):当其他线程执行 x 对象里面的`synchronized(this)`代码块时,也呈现同步效果
56+
- [example10](src/main/java/com/brianway/learning/java/multithread/synchronize/example10)
57+
- [Run10_synBlockMoreObjectOneLock.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example10/Run10_synBlockMoreObjectOneLock.java):验证同步 `synchronized(class)` 代码块的作用
58+
- [Run10_synMoreObjectStaticOneLock.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example10/Run10_synMoreObjectStaticOneLock.java):Class 锁可以对类的所有对象实例起作用
59+
- [Run10_synTwoLock.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example10/Run10_synTwoLock.java):验证 `synchronized` 关键字加载 `static` 静态方法和加到非静态方法不是同一个锁
60+
- [example11](src/main/java/com/brianway/learning/java/multithread/synchronize/example11)
61+
- [Run11_StringAndSyn.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example11/Run11_StringAndSyn.java):String 作为锁对象,常量池->同一锁
62+
- [Run11_StringAndSyn2.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example11/Run11_StringAndSyn2.java):不使用 String 作为锁对象
63+
- [example12](src/main/java/com/brianway/learning/java/multithread/synchronize/example12)
64+
- [Run12_deadLock.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example12/Run12_deadLock.java):死锁测试,jstack命令
65+
- [example13](src/main/java/com/brianway/learning/java/multithread/synchronize/example13)
66+
- [Run13_inner01.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example13/Run13_inner01.java):内置类和同步测试1
67+
- [Run13_inner02.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example13/Run13_inner02.java):内置类与同步测试2
68+
- [example14](src/main/java/com/brianway/learning/java/multithread/synchronize/example14)
69+
- [Run14_setNewStringTwoLock.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example14/Run14_setNewStringTwoLock.java):锁对象改变
70+
- [example15](src/main/java/com/brianway/learning/java/multithread/synchronize/example15)
71+
- [Run15_synchronized.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example15/Run15_synchronized.java):`synchronized` 代码块有 `volatile` 同步的功能
72+
- [Run15_volatile.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example15/Run15_volatile.java):不使用 `volatile` 关键字,JVM 配置 `-server`
73+
- [example16](src/main/java/com/brianway/learning/java/multithread/synchronize/example16)
74+
- [Run16_volatile.java](src/main/java/com/brianway/learning/java/multithread/synchronize/example16/Run16_volatile.java):`volatile` 非原子的特性

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example10/Run10_synBlockMoreObjectOneLock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
/**
88
* P101
9-
* 验证同步sychronized(class)代码块的作用
9+
* 验证同步synchronized(class)代码块的作用
1010
* 顺便验证了下static方法是不能复写的
1111
*
1212
* @see ServiceSub,ServiceSub2

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example13/Run13_inner01.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@
66
* P112
77
* 内置类和同步测试1
88
*/
9-
10-
/**
11-
* P112
12-
* 内置类和同步测试1
13-
*/
14-
159
import com.brianway.learning.java.multithread.synchronize.example13.OutClass.Inner;
1610

1711
public class Run13_inner01 {

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example15/Run15_synchronized.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
/**
88
* P130
9-
* sychronized代码块有volatile同步的功能
9+
* synchronized代码块有volatile同步的功能
1010
*/
1111
public class Run15_synchronized {
1212
public static void main(String[] args) {

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example3/Run3_synchronized01.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ public class Run3_synchronized01 {
1212
public static void main(String[] args) {
1313
MyObject object = new MyObject();
1414
ThreadA a = new ThreadA(object);
15-
a.setName("A");
15+
a.setName("A ");
1616
ThreadB b = new ThreadB(object);
17-
b.setName("B");
17+
b.setName("B ");
1818
a.start();
1919
b.start();
2020
}
@@ -25,16 +25,16 @@ public void methodA()没加synchronized
2525
输出:
2626
begin methodA threadName=B
2727
begin methodA threadName=A
28-
A end
29-
B end
28+
A end
29+
B end
3030
3131
-------------------
3232
3333
public void methodA()加synchronized
3434
输出:
3535
begin methodA threadName=A
36-
A end
36+
A end
3737
begin methodA threadName=B
38-
B end
38+
B end
3939
4040
*/

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example8/Run8_synchronized02.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
/**
88
* P76
99
* 同步代码块解决同步方法的弊端
10-
* 但输出并不是两个c,两个d,原因?
10+
* TODO 但输出并不是两个c,两个d,原因?
1111
*/
1212
public class Run8_synchronized02 {
1313
public static void main(String[] args) {

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example9/Run9_synchronized01.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* synchronized(非this对象x)的三个结论
1010
* 1)当多个线程同时执行synchronized(x){}同步代码块时呈现效果
1111
* 2)当其他线程执行x对象中synchronized同步方法时呈同步效果
12-
* 3)当其他线程执行x对象里面的ynchronized(this)代码块时,也呈现同步效果
12+
* 3)当其他线程执行x对象里面的synchronized(this)代码块时,也呈现同步效果
1313
* 验证结论1:
1414
* 当多个线程同时执行synchronized(x){}同步代码块时呈现效果
1515
*/

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example9/Run9_synchronized02.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* synchronized(非this对象x)的三个结论
1010
* 1)当多个线程同时执行synchronized(x){}同步代码块时呈现效果
1111
* 2)当其他线程执行x对象中synchronized同步方法时呈同步效果
12-
* 3)当其他线程执行x对象里面的ynchronized(this)代码块时,也呈现同步效果
12+
* 3)当其他线程执行x对象里面的synchronized(this)代码块时,也呈现同步效果
1313
* 验证结论2:
1414
* 当其他线程执行x对象中synchronized同步方法时呈同步效果
1515
*/

java-multithread/src/main/java/com/brianway/learning/java/multithread/synchronize/example9/Run9_synchronized03.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* synchronized(非this对象x)的三个结论
1010
* 1)当多个线程同时执行synchronized(x){}同步代码块时呈现效果
1111
* 2)当其他线程执行x对象中synchronized同步方法时呈同步效果
12-
* 3)当其他线程执行x对象里面的ynchronized(this)代码块时,也呈现同步效果
12+
* 3)当其他线程执行x对象里面的synchronized(this)代码块时,也呈现同步效果
1313
* 验证结论1:
1414
* 当其他线程执行x对象里面的ynchronized(this)代码块时,也呈现同步效果
1515
*/

0 commit comments

Comments
 (0)