java中的锁什么意思,java锁是用来干什么的

  java中的锁什么意思,java锁是用来干什么的

  如何解决写爬虫IP受阻的问题?立即使用。

  锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源。

  Java中的锁主要有以下几个概念:

  1.同步锁

  同时,一个同步锁只能被一个线程访问。基于该对象,synchronized关键字用于同步,实现了对竞争资源的互斥访问。

  2.排他锁(可以重新进入的互斥锁)

  互斥,即在同一时间点,只能被一个线程持有;可重入的,即可以被单线程多次获取。你什么意思?根据锁的获取机制,可分为“公平锁”和“不公平锁”。在Java中,独占锁是通过ReentrantLock实现的,默认是不公平锁。

  3.公平锁

  它是一种排他锁,按照先到先得的规则,通过CLH等待线程,线程依次排队,公平地获得锁。在Java中,ReetrantLock中有一个成员变量Sync,当它的实例是FairSync时,ReetrantLock就是一个公平锁。将sync设置为FairSync类型,就3354 lock lock=new reetrantlock(true)。

  4.不公平锁定

  当线程想要获取锁时,它会忽略CLH等待队列,直接获取锁。Reetlock默认为不公平锁,或者—— lock lock=new reetlock(false)。

  5.共享锁

  可以被多个线程同时获取和共享的锁。也就是说,多个线程可以获取锁并处理锁对象。典型的是读锁—— reentrantreadwritelock。读取锁定。也就是说,多个线程可以读取它而不影响其他线程的读取,但是没有人可以修改它。CyclicBarrier、CountDownLatch和Semaphore也是共享锁。

  6.读写锁

  维护一对相关的锁。“读锁”用于只读操作。它是一个“共享锁”,可以被多个线程同时获取。“写锁”用于写操作。它是一个“独占锁”,只能由一个线程锁获取。

  在Java中,读写锁被定义为读写锁的接口,其实现类为ReentrantReadWriteLock,包括内部类ReadLock和write lock。readLock()和writeLock()方法分别返回度操作的锁和写操作的锁。

  更多java知识,请关注java基础课程。这就是java中锁的细节。更多请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: