synchronized

多线程访问相同的共享可变的变量时,通常需要使用加锁的方式实现同步,避免竞态条件发生。同步的其中一个特征就是互斥,通过使访问顺序串行化,使得并发结果合法和可预期。synchronized是java的关键字,其通过java的内置锁机制实现多线程同步。

一、synchronized的三种锁形态

阅读更多

volatile

volatile是对共享变量的修饰词,无法修饰局部变量。它保证了被修饰变量的可见性和禁止指令重排。

一、JMM和volatile

阅读更多

Maven仓库更新策略

maven仓库的更新策略指的是更新maven-metadata-[repository].xml,即何时触发从远程仓库读取最西的’maven-metadata-[repository].xml’的策略。

一、Maven下载仓库配置

阅读更多

maven插件的依赖的查找顺序

maven的依赖下载和查找逻辑

  1. 优先下载标签里的依赖及其间接依赖;
    1)从lib-snapshot,lib-release中仓库下载到本地仓库,并copy到项目target目录;
阅读更多

Tomcat类加载器

  1. springboot实现定义了一个符合双亲委派的类TomcatEmbeddedWebappClassLoader extends WebappClassLoader,因为springboot只针对一个应用运行的场景,所以无需打破双亲委派。
  2. 使用IDEA调试Tomcat代码时,在Project Settings - Libraries里把tomcat/lib加进来就可以了。
阅读更多

while(true)和for(;;)分析

由字节码看,两者一致。

1
2
3
4
5
6
7
8
9
10
11
12
13
public class WhileForTest {
public void forFunc() {
for (;;) {
System.out.println("for loop");
}
}

public void whileFunc() {
while (true) {
System.out.println("while loop");
}
}
}
阅读更多