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

百度做自己的网站网站开发专业 工作意愿

百度做自己的网站,网站开发专业 工作意愿,导视设计英文,网站建设收费明细1. synchronized 锁 作用: synchronized 是 Java 最基础的锁机制,用于实现方法或代码块的同步,保证多线程环境下的原子性、可见性和有序性。 使用方式: 对象锁:修饰实例方法或代码块(锁对象为当前实例 th…
1. synchronized 锁

作用
synchronized 是 Java 最基础的锁机制,用于实现方法或代码块的同步,保证多线程环境下的原子性、可见性和有序性。

使用方式

  • 对象锁:修饰实例方法或代码块(锁对象为当前实例 this)。

    public synchronized void method() { ... } // 实例方法锁
    public void method() {synchronized (this) { ... }          // 代码块锁(对象锁)
    }
  • 类锁:修饰静态方法或代码块(锁对象为类的 Class 对象)。

    public static synchronized void staticMethod() { ... } // 静态方法锁
    public void method() {synchronized (MyClass.class) { ... } // 代码块锁(类锁)
    }

特点

  • 隐式锁:自动获取和释放锁,无需手动管理。

  • 可重入:线程可重复获取同一把锁。

  • 非公平锁:默认抢占式获取锁,不保证等待时间长的线程优先获取。

适用场景
简单同步需求,如单例模式的双重检查锁。


2. ReentrantLock(可重入锁)

作用
ReentrantLock 是 java.util.concurrent.locks 包下的显式锁,提供比 synchronized 更灵活的锁控制。

使用方式

ReentrantLock lock = new ReentrantLock();
public void method() {lock.lock(); // 手动加锁try {// 临界区代码} finally {lock.unlock(); // 必须手动释放}
}

核心功能

  • 尝试非阻塞获取锁tryLock()

  • 超时获取锁tryLock(long timeout, TimeUnit unit)

  • 公平性选择:构造函数传入 true 实现公平锁(按等待顺序分配锁)。

  • 条件变量:配合 Condition 实现线程间协调(如生产者-消费者模型)。

优缺点

  • 优点:灵活,支持中断、超时、公平锁。

  • 缺点:需手动释放锁,编码不当易导致死锁。

适用场景
需要复杂同步控制的场景,如多条件等待、锁超时处理。


3. ReadWriteLock(读写锁)

作用
允许多个线程同时读,但写线程独占资源,适用于读多写少的场景。

实现类ReentrantReadWriteLock

使用方式

ReentrantReadWriteLock rwLock = new ReentrantReadWriteLock();
ReentrantReadWriteLock.ReadLock readLock = rwLock.readLock();
ReentrantReadWriteLock.WriteLock writeLock = rwLock.writeLock();public void readData() {readLock.lock();try { ... } finally { readLock.unlock(); }
}public void writeData() {writeLock.lock();try { ... } finally { writeLock.unlock(); }
}

特点

  • 读共享:多个读线程可同时访问。

  • 写独占:写线程获取锁时,禁止其他读/写操作。

  • 锁降级:写锁可降级为读锁(反之不可)。

适用场景
缓存系统、频繁读取但偶尔更新的数据结构。


4. StampedLock(Java 8+)

作用
提供更灵活的读写锁控制,支持乐观读、悲观读、写锁三种模式,性能优于 ReadWriteLock

使用方式

StampedLock stampedLock = new StampedLock();// 乐观读(无锁)
long stamp = stampedLock.tryOptimisticRead();
if (!stampedLock.validate(stamp)) { // 检查是否发生写操作stamp = stampedLock.readLock(); // 退化为悲观读try { ... } finally { stampedLock.unlockRead(stamp); }
}// 写锁
long writeStamp = stampedLock.writeLock();
try { ... } finally { stampedLock.unlockWrite(writeStamp); }

特点

  • 乐观读:假设没有写操作,通过 validate() 验证。

  • 锁转换:支持读锁与写锁的转换(如 tryConvertToWriteLock())。

适用场景
读多写少且对性能要求极高的场景,但需谨慎处理锁转换逻辑。


5. 显式锁 vs 隐式锁
维度显式锁(如 ReentrantLock隐式锁(synchronized
锁获取方式手动调用 lock() 和 unlock()自动获取和释放
灵活性支持超时、中断、公平锁、条件变量仅支持非公平锁,无超时或中断机制
性能高并发场景下更优优化后性能接近显式锁(如锁升级机制)
代码复杂度需手动管理,易出错自动管理,代码简洁

6. 锁优化策略(JVM 对 synchronized 的优化)
  • 偏向锁
    假设只有一个线程访问同步块,通过标记线程 ID 避免 CAS 操作。
    适用场景:单线程重复访问同步代码。

  • 轻量级锁
    当多线程竞争时,通过 CAS 自旋尝试获取锁(避免阻塞)。
    适用场景:低竞争、同步块执行时间短。

  • 重量级锁
    竞争激烈时,线程进入阻塞状态,依赖操作系统的互斥量(Mutex)管理。
    适用场景:高竞争、同步块执行时间长。

锁升级流程

无锁 → 偏向锁 → 轻量级锁 → 重量级锁

7. 条件锁(Condition

作用
配合显式锁(如 ReentrantLock)使用,实现线程的等待/唤醒机制,类似 Object.wait() 和 Object.notify(),但更灵活。

使用方式

ReentrantLock lock = new ReentrantLock();
Condition condition = lock.newCondition();public void await() throws InterruptedException {lock.lock();try {condition.await(); // 释放锁并等待} finally { lock.unlock(); }
}public void signal() {lock.lock();try {condition.signal(); // 唤醒一个等待线程} finally { lock.unlock(); }
}

适用场景
生产者-消费者模型、多条件线程协调。


8. 分布式锁

作用
在分布式系统中协调多节点对共享资源的访问,防止并发冲突。

实现方式

  • Redis:通过 SETNX(或 RedLock 算法)实现。

    // 使用 Redisson 客户端
    RLock lock = redisson.getLock("myLock");
    lock.lock();
    try { ... } finally { lock.unlock(); }
  • ZooKeeper:通过临时有序节点实现。

  • 数据库:利用唯一索引或乐观锁(版本号)。

核心挑战

  • 死锁预防:设置锁超时时间。

  • 容错性:避免单点故障(如 Redis 集群)。


总结

锁类型核心特点适用场景
synchronized简单、自动管理,支持锁升级优化简单同步需求
ReentrantLock灵活,支持超时、公平锁、条件变量复杂同步控制(如多条件等待)
ReadWriteLock读写分离,读多写少场景性能更优缓存、频繁读的数据结构
StampedLock高性能,支持乐观读极高并发读场景
分布式锁跨进程、跨节点协调分布式系统资源共享

选择建议

  • 优先使用 synchronized(简单场景)。

  • 需要灵活控制时选 ReentrantLock

  • 读多写少用 ReadWriteLock 或 StampedLock

  • 分布式环境用 Redis/ZooKeeper 实现分布式锁。


文章转载自:

http://KMo8WNeK.dqcpm.cn
http://cY2j9Liu.dqcpm.cn
http://fVuwqkQx.dqcpm.cn
http://nCyBXTa9.dqcpm.cn
http://GMZF3rU2.dqcpm.cn
http://6bNUVadL.dqcpm.cn
http://hENqJd06.dqcpm.cn
http://Dg5mZcOp.dqcpm.cn
http://VmHaAKwc.dqcpm.cn
http://RrtldHuE.dqcpm.cn
http://KI75nCZ2.dqcpm.cn
http://jA02xJQN.dqcpm.cn
http://4ZPYNsfO.dqcpm.cn
http://ZYWU2fXA.dqcpm.cn
http://VJObjtU0.dqcpm.cn
http://zjEyexAZ.dqcpm.cn
http://L9o6Wvcq.dqcpm.cn
http://lvv221Yh.dqcpm.cn
http://zPvSlL4D.dqcpm.cn
http://f524J4cU.dqcpm.cn
http://VQbpqaAa.dqcpm.cn
http://UzzR7Pa5.dqcpm.cn
http://4gmsRz4E.dqcpm.cn
http://iYMgSMQF.dqcpm.cn
http://9vjkx0Hf.dqcpm.cn
http://Nh59KLrs.dqcpm.cn
http://YicXYmWr.dqcpm.cn
http://uEBLkEUx.dqcpm.cn
http://Z7GpgYZk.dqcpm.cn
http://oBB2oJyU.dqcpm.cn
http://www.dtcms.com/wzjs/714518.html

相关文章:

  • app下载网站建设里水哪里做有做网站
  • 我的世界做圆网站沧州微网网络信息有限公司
  • 霸气业务网站源码徐州网站营销
  • 网站备案需要提供什么资料成立了一支网站建设的专业队伍
  • 昆山建设银行交学费的网站广州市线下教学
  • 中文绿色环保网站模板下载wordpress lover主题
  • 邢台集团网站建设价格北京高端网站建设公司浩森宇特
  • 邮轮哪个网站是可以做特价wordpress 替代 php
  • 有培训做网站 小程序的学校wordpress拖拽式编辑器
  • seo做子网站软件开发专业难吗
  • 确定网站推广的阶段目标深圳高端保姆公司
  • 新网站建设的工作总结域名反查网站
  • 免费网站建设加盟wordpress网站搭建教程视频
  • 百度在线做网站能源建设投资有限公司网站
  • python进行网站开发优帮云首页推荐
  • 国外做美食的网站有哪些网页设计与制作对于大数据专业
  • 制作视频的免费软件优化大师专业版
  • 东莞网站推广宣传window主机用wordpress
  • 网站搭建好了怎么上到服务器手机购买网站源码
  • 如何上传自己做的网站杭州建站公司
  • 服装门户系统网站初中生怎么做网站
  • 连云港网站优化方案北京延庆城乡建设部网站首页
  • 网站素材图wordpress mould
  • js网站下拉置顶代码网络一站式服务平台
  • 如何在手机做网站网站初期建设的成本来源
  • phpcms建设网站北京网站建设大概多少钱
  • 做网站需要用什么系统百度seo不正当竞争秒收
  • 手机一元云购网站建设制作网页模板适应不同分辨率
  • 外贸公司网站空间网络推广有几种方法
  • 利用微博网站做淘客免费个人名片生成器