Java面试笔记 - 开发过程中的小设计

54 阅读1分钟

一、多线程

1.1 ConcurrentHashMap

一文彻底弄懂ConcurrentHashMap,轻松应对面试官! 这篇文章主要讲ConcurrentHashMap是HashMap的线程安全版本,具体的实现细节包括


二、锁 & 线程同步

2.1 synchronized

经历了很多优化,运行时会有三种存在方式。结论来源于文章一文彻底弄懂ConcurrentHashMap,轻松应对面试官!

  • 偏向锁:这段同步代码一直被一个线程访问,那这个线程会自动获得锁,降低获取锁的代价
  • 轻量级锁:偏向锁被另一个线程获取时,升级为轻量级锁。这个线程会通过自旋的方式获取锁,不会阻塞从而提高性能
  • 重量级锁:轻量级锁自旋多次后还没获取锁,就升级为重量级锁。阻塞其他线程

2.2 volatile

多线程访问一个变量的时候,其他线程能马上看到修改的值