Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

java reentrantlock

作者:我说°走了就别回来   发布日期:2026-04-26   浏览:56

import java.util.concurrent.locks.ReentrantLock;

public class ReentrantLockExample {
    private final ReentrantLock lock = new ReentrantLock();

    public void performOperation() {
        lock.lock();  // 获取锁
        try {
            // 执行临界区代码
            System.out.println("Critical section executed by " + Thread.currentThread().getName());
        } finally {
            lock.unlock();  // 确保在任何情况下都释放锁
        }
    }

    public static void main(String[] args) {
        ReentrantLockExample example = new ReentrantLockExample();

        // 创建多个线程来测试ReentrantLock
        Thread t1 = new Thread(() -> example.performOperation(), "Thread-1");
        Thread t2 = new Thread(() -> example.performOperation(), "Thread-2");

        t1.start();
        t2.start();
    }
}

解释说明:

  1. ReentrantLockReentrantLockjava.util.concurrent.locks 包中的一个类,提供了与内置锁(即 synchronized)类似的锁机制,但具有更灵活的功能。

  2. lock.lock() 和 lock.unlock()lock.lock() 方法用于获取锁,而 lock.unlock() 方法用于释放锁。确保在 finally 块中调用 unlock(),以保证即使发生异常也能正确释放锁。

  3. 临界区代码:在 try 块中的代码是临界区代码,只有当线程持有锁时才能执行这段代码。其他线程必须等待当前线程释放锁后才能进入临界区。

  4. 多线程测试:通过创建多个线程来测试 ReentrantLock 的效果,确保同一时间只有一个线程能够执行临界区代码。

上一篇:java数组赋值

下一篇:java数据库

大家都在看

java url decode

java判断是windows还是linux

java连接数据库的代码

java date类型比较大小

java djl

ubuntu 卸载java

es java api

java list 查找

java 解压rar

jsonobject.tojavaobje

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站