Skip to content
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Commit b9f9e98

Browse files
committedAug 4, 2018
auto commit
1 parent ff7187a commit b9f9e98

File tree

4 files changed

+6
-4
lines changed

4 files changed

+6
-4
lines changed
 

‎.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
.DS_Store
2-
2+
*.txt

‎notes/Java 基础.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -586,7 +586,7 @@ protected void finalize() throws Throwable {}
586586
**1. equals() 与 == 的区别**
587587

588588
- 对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
589-
- 对于引用类型,== 判断两个实例是否引用同一个对象,而 equals() 则是根据引用的对象的 equals() 方法的具体实现来进行比较。
589+
- 对于引用类型,== 判断两个实例是否引用同一个对象,而 equals() 判断引用的对象是否等价,根据引用的对象的 equals() 方法的具体实现来进行比较。
590590

591591
```java
592592
Integer x = new Integer(1);

‎notes/Java 并发.md

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1419,7 +1419,9 @@ public final int incrementAndGet() {
14191419
}
14201420
```
14211421

1422-
以下代码是 getAndAddInt() 源码,var1 指示对象内存地址,var2 指示该字段相对对象内存地址的偏移,var4 指示操作需要加的数值,这里为 1。通过 getIntVolatile(var1, var2) 得到旧的预期值,通过调用 compareAndSwapInt() 来进行 CAS 比较,如果 该字段内存地址中的值 ==var5,那么就更新内存地址为 var1+var2 的变量为 var5+var4。可以看到 getAndAddInt() 在一个循环中进行,发生冲突的做法是不断的进行重试。
1422+
以下代码是 getAndAddInt() 源码,var1 指示对象内存地址,var2 指示该字段相对对象内存地址的偏移,var4 指示操作需要加的数值,这里为 1。通过 getIntVolatile(var1, var2) 得到旧的预期值,通过调用 compareAndSwapInt() 来进行 CAS 比较,如果该字段内存地址中的值 ==var5,那么就更新内存地址为 var1+var2 的变量为 var5+var4。
1423+
1424+
可以看到 getAndAddInt() 在一个循环中进行,发生冲突的做法是不断的进行重试。
14231425

14241426
```java
14251427
public final int getAndAddInt(Object var1, long var2, int var4) {

‎notes/Java 虚拟机.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -627,7 +627,7 @@ public static void main(String[] args) {
627627

628628
从 Java 开发人员的角度看,类加载器可以划分得更细致一些:
629629

630-
- 启动类加载器(Bootstrap ClassLoader)此类加载器负责将存放在 <JRE_HOME>\lib 目录中的,或者被 -Xbootclasspath 参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如 rt.jar,名字不符合的类库即使放在 lib 目录中也不会被加载)类库加载到虚拟机内存中。启动类加载器无法被 Java 程序直接引用,用户在编写自定义类加载器时,如果需要把加载请求委派给启动类加载器,直接使用 null 代替即可。
630+
- 启动类加载器(Bootstrap ClassLoader)此类加载器负责将存放在 <JAVA_HOME>\lib 目录中的,或者被 -Xbootclasspath 参数所指定的路径中的,并且是虚拟机识别的(仅按照文件名识别,如 rt.jar,名字不符合的类库即使放在 lib 目录中也不会被加载)类库加载到虚拟机内存中。启动类加载器无法被 Java 程序直接引用,用户在编写自定义类加载器时,如果需要把加载请求委派给启动类加载器,直接使用 null 代替即可。
631631

632632
- 扩展类加载器(Extension ClassLoader)这个类加载器是由 ExtClassLoader(sun.misc.Launcher$ExtClassLoader)实现的。它负责将 <JRE_HOME>/lib/ext 或者被 java.ext.dir 系统变量所指定路径中的所有类库加载到内存中,开发者可以直接使用扩展类加载器。
633633

0 commit comments

Comments
 (0)
Please sign in to comment.