锁机制

作者: 她做了一个梦 | 来源:发表于2018-06-22 16:45 被阅读94次

ReentrantLock可重入锁:就是一个线程在获取了锁之后,再次去获取了同一个锁,这时候仅仅是把状态值进行累加

ReentrantLock支持两种获取锁的方式,一种是公平模型,一种是非公平模型。

公平锁:

当A把锁完全释放后,state恢复为0,然后会通知队列唤醒B线程节点,使B可以再次竞争锁,当然,如果B线程后还有C线程,C线程继续休眠,除非B执行完了,通知了C线程。

非公平锁模型

当线程A执行完之后,要唤醒线程B是需要时间的,而且线程B醒来后还要再次竞争锁,所以如果在切换过程当中,来了一个线程C,那么线程C是有可能获取到锁的,如果C获取到了锁,B只能继续休眠。

synchronized关键字 同步锁

1.可以修饰一个代码块,被修饰的代码块成为同步语句块,其作用的范围是大括号{}括起来的代码,作用的对象是调用这个代码块的对象;

publicvoidmethod(){

   synchronized(this) {

      // todo

   }

}

2.修饰一个方法,被修饰的方法成为同步方法,范围是整个方法,作用的对象是调用这个方法的对象。

publicsynchronizedvoidmethod()

{

   // todo

}

3.修饰一个静态的方法,其作用范围是整个静态方法,作用的对象是Class。

public synchronized void method() { }

4.修饰一个类,其作用的范围是synchronized后面括号括起来的部分,作用主的对象是这个类的所有对象。

classClassName {

   publicvoidmethod() {

      synchronized(ClassName.class) {

         // todo

      }

   }

}

参考文章http://blog.csdn.net/yanyan19880509/article/details/52345422

相关文章

  • 数据库为什么需要锁机制?有哪些锁机制?

    数据库为什么需要锁机制?有哪些锁机制?

  • 锁机制

    锁机制

  • MySQL 锁

    MySQL的锁机制 不同的存储引擎支持不同的锁机制 MyISAM和MEMORY存储引擎采用的是表级锁(table-...

  • java Thread深入了解(四)

    概念介绍 悲观锁是指假设并发更新冲突会发生,所以不管冲突是否真的发生,都会使用锁机制。相对悲观锁而言,乐观锁机制采...

  • java Thread深入了解(四)

    概念介绍 悲观锁是指假设并发更新冲突会发生,所以不管冲突是否真的发生,都会使用锁机制。相对悲观锁而言,乐观锁机制采...

  • 锁机制

    基础知识之一:锁的类型 锁从宏观上分类,分为悲观锁与乐观锁。 乐观锁 乐观锁是一种乐观思想,即认为读多写少,遇到并...

  • 锁机制

    一、说说线程安全问题,什么是线程安全,如何保证线程安全 http://www.jasongj.com/java/t...

  • 锁机制

    ReentrantLock可重入锁:就是一个线程在获取了锁之后,再次去获取了同一个锁,这时候仅仅是把状态值进行累加...

  • 锁机制

    锁机制 Innodb是事务级数据库,支持事务,支持外键,rollback,mvcc(高并发:在readcommit...

  • 锁机制

    乐观锁 乐观锁( Optimistic Locking)其实是一种思想。相对悲观锁而言,乐观锁假设认为数据一般情况...

网友评论

      本文标题:锁机制

      本文链接:https://www.haomeiwen.com/subject/twhmxftx.html