lock、tryLock、lockInterruptibly有什么区别?

lock:获取不到就一直阻塞,直到获取锁

volatile 有什么用?

保证可见性

底层有一个汇编编码lock,使得volatile修饰的变量能够同步到主内存中,通过MESI缓存一致性协议使其他的线程中的变量的副本失效,去主内存读取新值。保证有序性

底层为了优化可能会进行指令重排序,volatile主要是通过读写屏障来达到防止指令重排序的目的。

为什么要用读写锁?它有什么优点?

读写锁:分别对读和写加不同的锁,读锁可以和其他读锁共存,就是对同一个资源可以加多个读锁,但是读锁和写锁不能加到一个资源上,也就是加完读锁之后,不能再见写锁。

同理,加完写锁之后不能再加读锁和写锁。

优点:

多个读锁可以同时执行,所以提高了程序执行性能。因为读写锁是互斥的,所以不会读到临时的值。

公平锁和非公平锁有什么区别?

公平锁:在唤醒阻塞的线程的时候,按顺序唤醒阻塞的线程,所以是公平的。也可以这么理解,多个线程获取锁,直接放入阻塞队列。

非公平锁:唤醒阻塞老线程,但是不排除会有新线程抢占,也可以这么理解,多个线程获取锁,获取不到,再放入阻塞队列。

针对synchronized:这个队列是entryset中阻塞的线程

针对ReentrantLock,这个队列是AQS队列。

限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注