1. 重排序:指的是在执行程序时,编译器和处理器可能会对指令进行重新排序,以提高程序执行效率。但是,重排序可能会导致多线程程序出现一些意想不到的结果,因为不同线程可能观察到不同的指令执行顺序。\n\n2. 自旋锁:是一种基于忙等待的锁。当一个线程尝试获取自旋锁时,如果锁被其他线程占用,该线程会一直循环检测锁是否被释放,而不是进入休眠状态。自旋锁适用于锁被占用时间很短的情况,以避免线程切换的开销。\n\n3. 偏向锁:是一种针对单线程执行的优化手段。当一个线程获取锁时,偏向锁会记录该线程的ID,并将对象头的标记位设置为偏向锁。当该线程再次获取锁时,无需竞争,直接获取即可。偏向锁主要适用于只有一个线程访问对象的情况,可以减少锁的竞争。\n\n4. 轻量级锁:是一种用于提高多线程并发性能的锁机制。轻量级锁会先尝试使用CAS操作来获取锁,如果成功则直接执行同步代码块,如果失败则升级为重量级锁。轻量级锁的目的是减少线程在同步过程中的竞争,从而提高程序的执行效率。\n\n5. 可重入锁:也称为递归锁,是指同一个线程可以多次获得同一把锁。可重入锁主要用于避免线程死锁的发生,当一个线程已经持有锁时,再次获取锁时会增加锁的计数器,直到锁的计数器为零时,其他线程才能获取该锁。\n\n6. 公平锁:是一种保证线程获取锁的顺序按照请求的顺序来进行的锁。当多个线程尝试获取公平锁时,会按照先后顺序排队等待获取锁,避免线程饥饿现象的发生。\n\n7. 非公平锁:与公平锁相反,非公平锁不会按照线程请求锁的顺序来进行获取。在获取锁时,非公平锁会优先尝试获取锁,如果获取失败再排队等待。非公平锁的优势在于可以减少线程切换的开销,提高程序的执行效率。\n\n8. 乐观锁:是一种假设多线程之间不会发生冲突的锁机制。乐观锁在读取数据时不加锁,只在更新数据时进行加锁操作,如果发现其他线程已经更新了数据,则进行重试或回滚操作。乐观锁适用于并发度较高、冲突较少的场景。\n\n9. 悲观锁:与乐观锁相反,悲观锁假设多线程之间会发生冲突,因此在读取和更新数据时都会进行加锁操作。悲观锁适用于并发度较低、冲突较多的场景。

原文地址: https://www.cveoy.top/t/topic/pIWa 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录