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

设计公司注册资金多少合适怎么提高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.dtcms.com/wzjs/61899.html

相关文章:

  • 西安公司网站建设关键词搜索量全网查询
  • 燕十八html教程网站建设友链交易网
  • 公司部门介绍seo公司后付费
  • 江西门户网站建设网站优化seo怎么做
  • adobe illustrator做网站网络推广seo公司
  • 酷炫网站欣赏全球网站流量排名查询
  • 住房和城乡建设岗位证书查询官网东莞seo关键词
  • 专业网站开发平台成品网站源码1688免费推荐
  • 网站广告位制作武汉本地seo
  • 大连建设工程信息网下载中心百度seo营销
  • 江西建设网官方网站网站老域名跳转到新域名
  • 用旧手机做网站服务器百度电脑版官方下载
  • wordpress程序代码深圳博惠seo
  • web网站开发 网页模板百度知道网页版入口
  • 如何网上建设网站seo信息优化
  • 网站建设运作流程seo技术是什么
  • 建设自己的网站怎么这么难网络营销活动推广方式
  • 邢台市123搜狗seo查询
  • 网络服务器应用服务器北京网站优化方法
  • 卡盟怎么做网站app开发费用一览表
  • 网站背景怎么换图片识别 在线百度识图
  • 西安网站制作哪家公司好博客网
  • 怎样做自己的网站和发布网站如何快速推广app
  • 吉林企业网站建设sem营销推广
  • 潍坊企业做网站网站制作和推广
  • 网站被挂马无法访问宁波谷歌seo推广公司
  • 淘宝网站咋做seo网站系统
  • 前端旅游网站行程怎么做原创代写文章平台
  • 手机图片网站 模版鸿科经纬教网店运营推广
  • 哪些品牌网站做的好手机网站智能建站