安徽电信java面试题.docVIP

  • 3
  • 0
  • 约3.74千字
  • 约 7页
  • 2023-10-08 发布于重庆
  • 举报
1.synchronized和reentrantlock异同 相同点 都实现了多线程同步和内存可见性语义 都是可重入锁 不同点 实现机制不同synchronized通过java对象头锁标记和Monitor对象实现reentrantlock通过CAS、ASQ(AbstractQueuedSynchronizer)和locksupport(用于阻塞和解除阻塞)实现synchronized依赖jvm内存模型保证包含共享变量的多线程内存可见性reentrantlock通过ASQ的volatilestate保证包含共享变量的多线程内存可见性 使用方式不同synchronized可以修饰实例方法(锁住实例对象)、静态方法(锁住类对象)、代码块(显示指定锁对象)reentrantlock显示调用trylock()/lock()方法,需要在finally块中释放锁 功能丰富程度不同reentrantlock提供有限时间等候锁(设置过期时间)、可中断锁(lockInterruptibly)、condition(提供await、signal等方法)等丰富语义reentrantlock提供公平锁和非公平锁实现synchronized不可设置等待时间、不可被中断(interrupted) 2.concurrenthashmap为何读不用加锁 jdk1.7 1)HashEntry中的key、hash、ne

文档评论(0)

1亿VIP精品文档

相关文档