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

2021-04-11 14:28

阅读:510

标签:成功   调用   ring   nbsp   重入   循环   oid   技术   代码   

线程锁

  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);
    }
}

 

 

 

 

 

 

 

 

  

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

标签:成功   调用   ring   nbsp   重入   循环   oid   技术   代码   

原文地址:https://www.cnblogs.com/shuzhixia/p/13358850.html


评论


亲,登录后才可以留言!