当前位置: 首页 > news >正文

房产网站建设方案的论文上海关键词排名推广

房产网站建设方案的论文,上海关键词排名推广,如何添加网站后台,四川省网站建设文章目录 前言一、 ReentrantLock(单机锁,Java 内置)示例:方法详解 二、RLock(分布式锁,Redisson 提供)示例:方法详解 三、 对比总结:四、 如何选择? 前言 ReentrantLock 和 RLock 都…

文章目录

  • 前言
  • 一、 ReentrantLock(单机锁,Java 内置)
    • 示例:
    • 方法详解
  • 二、RLock(分布式锁,Redisson 提供)
    • 示例:
    • 方法详解
  • 三、 对比总结:
  • 四、 如何选择?


前言

ReentrantLock 和 RLock 都是可重入锁(Reentrant Lock),但它们属于不同的锁实现,分别适用于 单机环境 和 分布式环境。

一、 ReentrantLock(单机锁,Java 内置)

ReentrantLock 是 Java 标准库(java.util.concurrent.locks)提供的可重入互斥锁,适用于 单机多线程 场景。特点可重入性:同一个线程可以多次获取同一把锁(避免死锁)。公平/非公平锁:支持公平锁(按等待顺序获取)和非公平锁(默认,允许插队)。可中断:lockInterruptibly() 允许线程在等待锁时响应中断。条件变量:支持 Condition,用于线程间协调(如 await() / signal())。必须手动释放:必须调用 unlock(),否则可能导致死锁。

示例:

ReentrantLock lock = new ReentrantLock();
try {if (lock.tryLock(1, TimeUnit.SECONDS)) { // 尝试获取锁,最多等1秒try {System.out.println("Lock acquired!");} finally {lock.unlock(); // 必须手动释放}}
} catch (InterruptedException e) {Thread.currentThread().interrupt();
}

方法详解

方法说明
lock()阻塞获取锁,如果锁被占用,当前线程会一直等待。
lockInterruptibly()可中断地获取锁,等待过程中可响应 InterruptedException。
tryLock()尝试非阻塞获取锁,成功返回 true,失败返回 false。
tryLock(long timeout, TimeUnit unit)在指定时间内尝试获取锁,超时返回 false。
unlock()释放锁(必须在 finally 块中调用,避免死锁)。
isLocked()判断锁是否被占用(非标准方法,需自定义实现)。
isHeldByCurrentThread()判断当前线程是否持有锁。
getHoldCount()返回当前线程持有锁的次数(可重入计数)。
getQueueLength()返回等待获取锁的线程数(监控用)。
hasQueuedThreads()是否有线程在等待锁。
newCondition()返回 Condition 对象,用于线程间协调(类似 wait/notify)。

二、RLock(分布式锁,Redisson 提供)

RLock 是 Redisson(Redis 客户端)提供的 分布式可重入锁,适用于 多机多进程 环境,基于 Redis 实现。特点可重入性:同 ReentrantLock,支持同一个客户端多次加锁。自动释放(Lease Time):可以设置锁的自动过期时间(防止死锁)。看门狗机制(Watchdog):如果未指定 leaseTime,Redisson 会启动一个后台线程(看门狗)自动续期锁,避免业务未执行完锁就过期。支持高可用:如果 Redis 是集群模式,RLock 仍然可用(Redisson 有 RedLock 算法)。支持异步锁:提供 lockAsync() 等异步方法。

示例:

RLock lock = redisson.getLock("myLock");
try {// 尝试获取锁,最多等10秒,锁自动30秒后释放if (lock.tryLock(10, 30, TimeUnit.SECONDS)) {try {System.out.println("Lock acquired!");// 业务逻辑...} finally {lock.unlock(); // 建议手动释放(即使设置了leaseTime)}}
} catch (InterruptedException e) {Thread.currentThread().interrupt();
}

方法详解

方法说明
lock()阻塞获取锁,默认 看门狗自动续期(防止死锁)。
lock(long leaseTime, TimeUnit unit)获取锁并设置自动释放时间(leaseTime 后自动释放)。
lockInterruptibly()可中断获取锁(支持线程中断)。
tryLock()尝试获取锁,成功返回 true,失败返回 false。
tryLock(long waitTime, long leaseTime, TimeUnit unit)在 waitTime 内尝试获取锁,成功后锁在 leaseTime 后自动释放。
unlock()释放锁(建议在 finally 中调用)。
forceUnlock()强制释放锁(即使当前线程未持有)。
isLocked()判断锁是否被占用。
isHeldByCurrentThread()当前线程是否持有锁。
remainTimeToLive()返回锁的剩余存活时间(TTL)。

三、 对比总结:

在这里插入图片描述

四、 如何选择?

单机应用 ➝ ReentrantLock(更轻量,无网络开销)。
分布式系统 ➝ RLock(基于 Redis,适用于多服务竞争锁)。
需要自动释放 ➝ RLock(设置 leaseTime 防止死锁)。
需要条件变量 ➝ ReentrantLock(Condition 更灵活)。
如果你的应用是 微服务/分布式架构,RLock 是更好的选择;如果是 单机高并发,ReentrantLock 更高效。

http://www.hkea.cn/news/894241/

相关文章:

  • 定制网站多少钱北京seo网站管理
  • 南昌做网站公司哪家好如何建立独立网站
  • 成都解放号网站建设什么是百度竞价
  • 网站优化的基本思想与原则百度号码
  • 沧州网站建设制作设计优化深圳seo优化推广
  • 建立一个网站需要什么技术网上培训机构
  • 网站设计与管理论文百度账号注册平台
  • 网站空间商推荐seo是什么职位缩写
  • 怎么建设boss网站文件外链
  • 百度推广网站建设费百度搜索引擎的网址是多少
  • php 手机网站 上传图片定制网站建设
  • 关于网站建设的问题百度关键词分析
  • 登录官方网站装修公司网络推广方案
  • 设计网站官网入口网站搜索优化方法
  • 网站优化qq群山东做网站
  • wordpress icomoon太原seo快速排名
  • 中华建设杂志网站记者数据指数
  • 网站开发测试情况南召seo快速排名价格
  • 上海仓储公司小红书seo优化
  • 南京建设公司网站网络营销整合推广
  • wordpress更改语言沈阳seo优化
  • wordpress免费网站世界大学排名
  • 做网站的属于什么专业?百度爱采购竞价推广
  • 网站建设一年多少恰东莞网站到首页排名
  • 新企业网站应该怎么做SEO优化广告联盟有哪些
  • 手机app开发网站建设软文推广文章案例
  • 网站自然排名百度经验官网登录
  • dz网站模板沧州网站优化公司
  • 桂林论坛天涯社区培训行业seo整站优化
  • 做伊瑞尔竞技场的网站搜索引擎简称seo