Skip to content

Commit cc87677

Browse files
Update
1 parent 2c6f68a commit cc87677

File tree

9 files changed

+17
-9
lines changed

9 files changed

+17
-9
lines changed

DeadLock/src/DeadLockSummary.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class DeadLockSummary {
99
/**
1010
* 1.发生在并发中
1111
* 2.互不相让
12-
* 3.如果多个线程之间的依赖关系是环形,存在环路的锁的依赖关系,也可能会发生死锁
12+
* 3.如果多个线程11之间的依赖关系是环形,存在环路的锁的依赖关系,也可能会发生死锁
1313
*/
1414

1515

@@ -24,7 +24,7 @@ public class DeadLockSummary {
2424

2525
/**
2626
* 进餐问题的解决方案
27-
* -> 服务员见检查(避免策略)
27+
* -> 服务员检查(避免策略)
2828
* -> 改变一个哲学家拿叉子的顺序(避免策略)
2929
* -> 餐票(避免策略)
3030
* -> 领导调节(检测与恢复策略)

JMM/src/singleton/hungryman/SingletonStaticCodeBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package singleton.hungryman;
22

33
/**
4-
* 单例实现之二 -> 饿汉式(静态代码块)
4+
* 单例实现之二 -> 饿汉式(静态代码块) 可用
55
*
66
* @Author: zzStar
77
* @Date: 10-20-2020 10:24

JMM/src/singleton/hungryman/SingletonStaticFinal.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package singleton.hungryman;
22

33
/**
4-
* 单例实现之一 -> 饿汉式(静态常量)
4+
* 单例实现之一 -> 饿汉式(静态常量)可用
55
*
66
* @Author: zzStar
77
* @Date: 10-20-2020 10:20
@@ -15,6 +15,7 @@ public static SingletonStaticFinal getINSTANCE() {
1515
return INSTANCE;
1616
}
1717

18+
// 单例模式的构造函数都是private
1819
private SingletonStaticFinal() {
1920
}
2021

JMM/src/singleton/lazyman/SingletonDoubleCheck.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public static SingletonDoubleCheck getInstance() {
1919

2020
if (instance == null) {
2121
synchronized (SingletonDoubleCheck.class) {
22-
// 第二个线程进来做一个判断检查
22+
// 第二个线程进来做一个判断检查,依然是空,才创建实例
2323
if (instance == null) {
2424
instance = new SingletonDoubleCheck();
2525
}

JMM/src/singleton/lazyman/SingletonStaticInnerClass.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@
99
public class SingletonStaticInnerClass {
1010

1111
private SingletonStaticInnerClass() {
12-
1312
}
1413

1514
public static SingletonStaticInnerClass getInstance() {

JMM/src/singleton/lazyman/SingletonSynchronizationCodeBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package singleton.lazyman;
22

33
/**
4-
* 单例之五 -> 懒汉式(线程不安全,同步代码块)不可用
4+
* 单例之五 -> 懒汉式(线程不安全,同步代码块)不可用,引申出双重检查
55
*
66
* @Author: zzStar
77
* @Date: 10-20-2020 10:41

JMM/src/singleton/lazyman/SingletonSynchronizationMethod.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public class SingletonSynchronizationMethod {
1313
private SingletonSynchronizationMethod() {
1414
}
1515

16+
// 区别于三,就是简单的在方法上加synchronized
1617
public synchronized static SingletonSynchronizationMethod getInstance() {
1718
// 适用于多线程环境
1819
if (instance == null) {

JMM/src/volatileusage/FieldVisibility.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
/**
44
* 演示可见性带来的问题(local cache 和 shared cache 的同步问题)
55
* 第二个线程可能看不到前一个线程的操作,出现b=3,a=1
6+
* <p>
7+
* 普通三种情况
8+
* a=3,b=2
9+
* a=1,b=2
10+
* a=3,b=2
611
*
712
* @Author: zzStar
813
* @Date: 10-19-2020 17:07
@@ -16,6 +21,8 @@ public class FieldVisibility {
1621
// "近朱者赤" 实现了轻量级的同步
1722
// 作为刷新之前变量的触发器
1823
volatile int b = 2;
24+
// 不加volatile会出现b=3,a=1
25+
// int b = 2;
1926

2027
private void change() {
2128
a = 3;

JMM/src/volatileusage/VolatileSummary.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
public class VolatileSummary {
1010

1111
/**
12-
* Volatile是一种同步机制,比synchronized或者Lock相关类更轻量,因为使用Volatile并不会发生上下文切换等开销恒大的行为
12+
* Volatile是一种同步机制,比synchronized或者Lock相关类更轻量,因为使用Volatile并不会发生上下文切换等开销很大的行为
1313
* 如果一个变量被修饰Volatile,JVM就知道这个变量可能被并发修改
1414
* 注意❗ Volatile做不到synchronized那样的原子保护,仅在很有限的场景下才能发挥作用
1515
*/
@@ -46,4 +46,4 @@ public class VolatileSummary {
4646
* synchronized也具备近朱者赤
4747
* -> synchronized不仅防止了一个线程在操作某对象时收到其他线程的干扰,同时还保证了修改好以后,可用立即被其他线程看到
4848
*/
49-
}
49+
}

0 commit comments

Comments
 (0)