线程锁相关,锁消除,锁相关

Posted shuzhixia

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了线程锁相关,锁消除,锁相关相关的知识,希望对你有一定的参考价值。

线程锁

  1. 自旋锁:为了不放弃CPU执行事件,循环的使用CAS技术对数据尝试进行更新,直到成功。
  2. 悲观锁:假定会发生并发冲突,同步所有对数据的相关操作,从数据就开始上锁。
  3. 乐观锁:假定没有冲突,在修改数据时如果数据发现和之前获取的不一致,则读最新数据,修改后重新修改。
  4. 独享锁(写):给资源加上写锁,线程可以修改资源,其他线程不能再锁;(单写)。
  5. 共享锁(读):给资源加上读锁只能读不能改,其他线程也只能加读锁,不能加写锁;(多读)。 
  6. 可重入锁、不可重入锁:线程拿到一把锁之后,可以自由进入同一把锁同步的其他代码。
  7. 公平锁、非公平锁:争抢锁的顺序,如果是按先来后到,则为公平。
  8. synchronized同步锁

 可重入锁

线程拿到一把锁之后,可以自由进入同一把锁同步的其他代码。

// 可重入
public class ObjectSyncDemo2 {

    public synchronized void test1(Object arg) {
        System.out.println(Thread.currentThread() + " 我开始执行 " + arg);
        if (arg == null) {
            test1(new Object());//这里再调用方法,使用同步锁
        }
        System.out.println(Thread.currentThread() + " 我执行结束" + arg);
    }

    public static void main(String[] args) throws InterruptedException {
        new ObjectSyncDemo2().test1(null);
    }
}

 

 

 

 

 

 

 

 

  

以上是关于线程锁相关,锁消除,锁相关的主要内容,如果未能解决你的问题,请参考以下文章

[iOS开发]iOS中的相关锁

[iOS开发]iOS中的相关锁

Java并发编程——锁相关Java内存模型volatileCAS原子操作类线程池

并发编程-锁相关的内存语义

#yyds干货盘点# Java | 关于synchronized相关理解

java锁相关内容