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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。