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

亚马逊跨境电商培训好用的seo软件

亚马逊跨境电商培训,好用的seo软件,网站编辑专题怎么做,兼职游戏网站怎么做Java 锁机制详解:用“厕所门”和“防盗门”轻松理解多线程同步 目录 锁的作用synchronized 关键字ReentrantLockReadWriteLockStampedLock避免死锁的诀窍总结与对比 锁的作用 生活中的例子:公共厕所一次只能进一人,门上的“有人/无人”标志…

Java 锁机制详解:用“厕所门”和“防盗门”轻松理解多线程同步

目录

  • 锁的作用
  • synchronized 关键字
  • ReentrantLock
  • ReadWriteLock
  • StampedLock
  • 避免死锁的诀窍
  • 总结与对比

锁的作用

生活中的例子:公共厕所一次只能进一人,门上的“有人/无人”标志就是锁。
程序中的作用:当多个线程操作共享资源(如银行账户余额)时,锁保证数据安全。


synchronized 关键字

1. 同步方法

class BankAccount {private int balance = 100;// 锁住整个对象public synchronized void withdraw(int amount) {if (balance >= amount) {System.out.println(Thread.currentThread().getName() + " 取款 " + amount);balance -= amount;}}
}

类比:厕所门自动上锁,其他人必须等待。

2. 同步代码块

public void withdraw(int amount) {// 只锁关键代码synchronized(this) { if (balance >= amount) {balance -= amount;}}
}

优势:缩小锁范围,提高效率。


ReentrantLock

import java.util.concurrent.locks.ReentrantLock;class TicketSeller {private int tickets = 10;private ReentrantLock lock = new ReentrantLock();public void sellTicket() {lock.lock(); // 手动加锁try {if (tickets > 0) {System.out.println(Thread.currentThread().getName() + " 卖出第 " + tickets--);}} finally {lock.unlock(); // 必须手动释放!}}
}

特点

  • 支持公平锁(new ReentrantLock(true)
  • 可尝试获取锁(tryLock()
  • 可中断等待(lockInterruptibly()

类比:手动开关的防盗门,灵活控制进出规则。


ReadWriteLock

import java.util.concurrent.locks.ReadWriteLock;
import java.util.concurrent.locks.ReentrantReadWriteLock;class Cache {private Object data = null;private ReadWriteLock rwLock = new ReentrantReadWriteLock();// 读操作:共享锁public Object getData() {rwLock.readLock().lock();try {return data;} finally {rwLock.readLock().unlock();}}// 写操作:独占锁public void updateData(Object newData) {rwLock.writeLock().lock();try {data = newData;} finally {rwLock.writeLock().unlock();}}
}

适用场景:读多写少(如商品库存查询)。


StampedLock

import java.util.concurrent.locks.StampedLock;class Point {private double x, y;private StampedLock lock = new StampedLock();// 乐观读:假设写操作很少发生public double distanceFromOrigin() {long stamp = lock.tryOptimisticRead();double currentX = x, currentY = y;if (!lock.validate(stamp)) { // 检查是否有写操作stamp = lock.readLock(); // 转为悲观读锁try {currentX = x;currentY = y;} finally {lock.unlockRead(stamp);}}return Math.sqrt(currentX * currentX + currentY * currentY);}
}

特点:在读多写少时性能更高,但实现复杂。


避免死锁的诀窍

经典死锁场景:两人在独木桥相遇,互不相让。
解决方案

  1. 固定顺序获取锁:比如先锁 A 再锁 B。
  2. 设置超时时间tryLock(5, TimeUnit.SECONDS)

总结与对比

锁类型特点适用场景
synchronized自动加锁/释放,简单但性能较低简单同步需求
ReentrantLock手动控制,支持公平锁/条件变量复杂同步场景
ReadWriteLock读写分离,提升读性能读多写少(如缓存)
StampedLock乐观读,性能最高但实现复杂极高并发读,极少写

提示:实际开发中优先选择 synchronized,需要高级功能时再考虑其他锁。

http://www.cadmedia.cn/news/1239.html

相关文章:

  • wordpress4.7主题制作浙江seo外包费用
  • 微页制作平台网站建设口碑seo推广公司
  • 做网站端口映射网站优化关键词价格
  • 电子商务网站采用的开发技术西安seo排名扣费
  • 护卫神做的网站访问营销型网站建设的5大技巧
  • 网站建设菜鸟教程百度视频广告怎么投放
  • 建站公司怎么拓客长春做网络优化的公司
  • 中山哪家建网站好有创意的营销案例
  • 网站建设 西安百度网页版下载
  • 化妆品网站网页设计百度爱采购推广效果怎么样?
  • 网站优化三要素做网站需要多少钱
  • 中小企业为什么要建设网站百度推广助手客户端
  • 做奶茶吧店网站全国疫情最新消息今天新增
  • 深圳建设合同备案 网站域名查询阿里云
  • 建设文明网 联盟网站的seo岗位有哪些
  • 武汉做营销型网站网络营销技巧和营销方法
  • 关于服装的商务网站建设策划书产品互联网推广
  • 烟台电商网站建设东莞新闻头条新闻
  • 主题网站界面设计百度app下载最新版本
  • 政府网站建设 调研报告免费发布广告的平台
  • 网站建设企业服务网络推广公司如何做
  • 潍坊手机网站建设seo全网图文推广
  • 南京手机网站制作公司seo外链工具
  • 湖南畅想网站建设海淀seo搜索引擎优化公司
  • 浦东医院网站建设百度一下官网网址
  • 仓库管理 erp长春网站seo公司
  • 伊宁网站建设优化优化大师官方下载
  • 黑龙江省城乡和住房建设厅网站首页优化搜索关键词
  • 泰格豪雅手表官方网站电商平台的营销方式
  • 网页设计师资格证seo求职信息