lock、tryLock、lockInterruptibly有什么区别?
lock:获取不到就一直阻塞,直到获取锁
volatile 有什么用?
保证可见性
底层有一个汇编编码lock,使得volatile修饰的变量能够同步到主内存中,通过MESI缓存一致性协议使其他的线程中的变量的副本失效,去主内存读取新值。保证有序性
底层为了优化可能会进行指令重排序,volatile主要是通过读写屏障来达到防止指令重排序的目的。
为什么要用读写锁?它有什么优点?
读写锁:分别对读和写加不同的锁,读锁可以和其他读锁共存,就是对同一个资源可以加多个读锁,但是读锁和写锁不能加到一个资源上,也就是加完读锁之后,不能再见写锁。
同理,加完写锁之后不能再加读锁和写锁。
优点:
多个读锁可以同时执行,所以提高了程序执行性能。因为读写锁是互斥的,所以不会读到临时的值。
公平锁和非公平锁有什么区别?
公平锁:在唤醒阻塞的线程的时候,按顺序唤醒阻塞的线程,所以是公平的。也可以这么理解,多个线程获取锁,直接放入阻塞队列。
非公平锁:唤醒阻塞老线程,但是不排除会有新线程抢占,也可以这么理解,多个线程获取锁,获取不到,再放入阻塞队列。
针对synchronized:这个队列是entryset中阻塞的线程
针对ReentrantLock,这个队列是AQS队列。
限 时 特 惠: 本站每日持续更新海量各大内部创业教程,一年会员只需98元,全站资源免费下载 点击查看详情
站 长 微 信: lzxmw777
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。