Home  >  Article  >  Java  >  What is a lock in java

What is a lock in java

尚
Original
2019-11-21 10:47:546210browse

What is a lock in java

Locks are used to control how multiple threads access shared resources. Generally speaking, a lock can prevent multiple threads from accessing shared resources at the same time.

The locks in Java mainly have the following concepts:

1. Synchronization lock

At the same time, a synchronization lock can only be accessed by one thread. Based on objects, synchronization is performed through the synchronized keyword to achieve mutually exclusive access to competing resources.

2. Exclusive lock (reentrant mutex lock)

Mutually exclusive, that is, it can only be held by one thread at the same point in time; reentrant, that is, it can be held by a single thread The thread gets multiple times. What does that mean? According to the lock acquisition mechanism, it is divided into "fair lock" and "unfair lock". Exclusive locks are implemented in Java through ReentrantLock, which defaults to unfair locks.

3. Fair lock

is based on the first-come, first-served rule for threads waiting through CLH. Threads queue up in order to acquire locks fairly. It is a type of exclusive lock. In Java, there is a member variable sync of Sync type in ReetrantLock. When its instance is of FairSync type, ReetrantLock is a fair lock. To set sync to FairSync type, just-Lock lock = new ReetrantLock(true).

4. Unfair lock

When a thread wants to acquire a lock, it will ignore the CLH waiting queue and acquire the lock directly. ReetrantLock defaults to an unfair lock, or - Lock lock = new ReetrantLock(false).

5. Shared lock

A lock that can be acquired and shared by multiple threads at the same time. That is, multiple threads can acquire the lock and process the lock object. The typical one is read lock - ReentrantReadWriteLock.ReadLock. That is, multiple threads can read it, and it does not affect other threads' reading of it, but no one can modify it. CyclicBarrier, CountDownLatch and Semaphore are also shared locks.

6. Read-write lock

maintains a pair of related locks. The "read lock" is used for read-only operations. It is a "shared lock" and can be acquired by multiple threads at the same time. . "Write lock" is used for write operations. It is an "exclusive lock" and can only be acquired by one thread lock.

In Java, the read-write lock is defined by the ReadWriteLock interface, and its implementation class is ReentrantReadWriteLock, including internal classes ReadLock and WriteLock. The methods readLock() and writeLock() return the lock for the operation and the lock for the write operation respectively.

For more java knowledge, please pay attention to java basic tutorial.

The above is the detailed content of What is a lock in java. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn