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

响应式网站怎么做才实用公司要我做网站_没有公司的材料是不是不可以做

响应式网站怎么做才实用,公司要我做网站_没有公司的材料是不是不可以做,个人简介网页设计代码,旺店通erp企业版下载app内容摘要 StampedLock类是一种高性能的读写锁#xff0c;它通过引入乐观读和写锁的优化机制#xff0c;提高了多线程环境下的并发性能#xff0c;他支持三种访问模式#xff1a;悲观读、写和乐观读#xff0c;可以根据不同的业务场景选择适合的锁策略#xff0c;相比传统… 内容摘要 StampedLock类是一种高性能的读写锁它通过引入乐观读和写锁的优化机制提高了多线程环境下的并发性能他支持三种访问模式悲观读、写和乐观读可以根据不同的业务场景选择适合的锁策略相比传统的读写锁StampedLock能够更好地利用多核处理器的优势减少线程间的竞争和阻塞从而提升系统的吞吐量和响应速度。 官方文档地址https://docx.iamqiang.com/jdk11/api/java.base/java/util/concurrent/locks/StampedLock.html 使用场景 StampedLock是一个优化的读写锁它在多核处理器上提供了比ReentrantReadWriteLock更高的性能与传统的读写锁不同StampedLock支持三种访问模式读、写和乐观读并且这三种模式都可以相互转换。 假设有一个在线书店系统其中一个关键功能是书籍的库存更新每当用户购买书籍时系统需要从库存中减去相应的数量同时为了提供良好的用户体验系统还需要实时显示每本书的当前库存量以供其他用户参考。在这个场景中库存更新操作写操作和库存查询操作读操作是频繁发生的而且多个用户可能同时查询同一本书的库存但同一时间只有一个用户能够更新库存。 可以使用StampedLock解决这个问题如下操作 写操作库存更新当一个用户下单购买书籍时系统会获取一个写锁确保在更新库存的过程中其他用户不能同时进行读或写操作这就像是在书店里当售货员正在为一位顾客取书并更新库存时其他顾客需要稍等片刻直到售货员完成操作。读操作库存查询多个用户可以同时查询同一本书的库存而不会相互干扰这时系统会为每个查询请求获取一个读锁这就像是在书店里多位顾客可以同时查看书架上的书籍了解库存情况。乐观读StampedLock还提供了一种乐观读的模式它允许在不阻塞其他写操作的情况下进行读操作如果读操作期间发生了写操作乐观读可以通过检查一个“戳记”stamp来发现数据的不一致性并重新执行读操作这就像是一位顾客在查看库存时突然意识到售货员正在为另一位顾客取书并更新库存这时他可以稍等片刻然后再次查看最新的库存信息。 代码案例 StampedLock 类中的 asReadLock() 方法用于获取一个 Lock 视图该视图具有与 StampedLock 的读锁相同的锁定含义可以使用返回的 Lock 对象进行读锁定就像使用 ReentrantReadWriteLock 的读锁一样但是通常建议使用 StampedLock 的其他方法来获取读锁因为它们可以提供更精细的控制和更高的性能。 下面是一个简单的例子演示了使用 StampedLock 类的基本使用方法这个例子创建了一个简单的计数器类该类使用 StampedLock 来同步对内部计数器的访问如下代码 import java.util.concurrent.locks.Lock; import java.util.concurrent.locks.StampedLock; /*** 创建人 程序员古德 br* 创建时间 2024/1/18 12:00 br* 修改人 暂无 br* 修改时间 暂无 br* 版本历史 暂无 br*/public class Counter { private int count; private final StampedLock stampedLock new StampedLock(); // 使用 StampedLock 的 asReadLock() 方法获取读锁 public void readCountWithLock() { Lock readLock stampedLock.asReadLock(); readLock.lock(); // 获取读锁 try { System.out.println(Current count: count); } finally { readLock.unlock(); // 释放读锁 } } // 使用 StampedLock 的普通读方法 public int readCountWithStamp() { long stamp stampedLock.tryOptimisticRead(); // 尝试乐观读 int currentCount count; // 检查乐观读后数据是否被修改 if (!stampedLock.validate(stamp)) { // 如果数据被修改获取读锁重新读取 stamp stampedLock.readLock(); try { currentCount count; } finally { stampedLock.unlockRead(stamp); } } return currentCount; } // 增加计数器的值 public void incrementCount() { long stamp stampedLock.writeLock(); // 获取写锁 try { count; } finally { stampedLock.unlockWrite(stamp); // 释放写锁 } } public static void main(String[] args) throws InterruptedException { Counter counter new Counter(); // 启动一个线程来增加计数器的值 Thread incrementThread new Thread(() - { for (int i 0; i 5; i) { counter.incrementCount(); try { Thread.sleep(100); // 休眠以模拟工作负载 } catch (InterruptedException e) { e.printStackTrace(); } } }); // 启动一个线程来读取计数器的值使用 Lock Thread readThreadWithLock new Thread(() - { for (int i 0; i 5; i) { counter.readCountWithLock(); try { Thread.sleep(100); // 休眠以模拟工作负载 } catch (InterruptedException e) { e.printStackTrace(); } } }); // 启动一个线程来读取计数器的值使用 stamp Thread readThreadWithStamp new Thread(() - { for (int i 0; i 5; i) { System.out.println(Current count (stamp): counter.readCountWithStamp()); try { Thread.sleep(100); // 休眠以模拟工作负载 } catch (InterruptedException e) { e.printStackTrace(); } } }); // 启动所有线程 incrementThread.start(); readThreadWithLock.start(); readThreadWithStamp.start(); // 等待所有线程完成 incrementThread.join(); readThreadWithLock.join(); readThreadWithStamp.join(); } }在上面代码中Counter 类有一个 count 变量它可以通过 incrementCount 方法来增加读取计数器值的方法有两种readCountWithLock 使用 asReadLock() 方法返回的 Lock 对象进行同步而 readCountWithStamp 则使用 StampedLock 的乐观读和读锁功能。在 main 方法中启动了三个线程一个用于增加计数器的值另外两个用于读取计数器的值一个使用 Lock另一个使用 stamp。 asReadLock() 方法提供了普通 Lock 的方式但通常建议直接使用 StampedLock 的其他方法如 tryOptimisticRead、readLock、unlockRead 等因为它们提供了更高级别的并发控制和性能优化。 核心总结 StampedLock类总结 StampedLock提供了一种高效的线程同步方式与传统的读写锁相比如ReentrantReadWriteLockStampedLock则在某些方面展现出了其独特的优势如下分析 优点 高效的读性能StampedLock在读操作上的性能尤为出色它允许多个线程同时读取共享资源而无需像ReentrantReadWriteLock那样在读线程之间保持互斥这在读操作远多于写操作的场景中能够显著提升系统的整体吞吐量。乐观读策略StampedLock引入了乐观读的概念在进行读取操作前线程可以尝试不获取锁直接读取数据然后通过验证一个“戳记”stamp来确认数据在读取过程中是否被修改这种策略在数据冲突较少的场景下能够减少不必要的锁竞争从而提高性能。轻量级设计与ReentrantReadWriteLock相比StampedLock的设计更为轻量级没有与Condition相关的复杂机制这使得它在简单的同步场景中更为高效。 缺点 不支持重入性StampedLock不是重入锁这意味着同一个线程不能重复获取同一个锁在处理递归逻辑或需要在持有锁的情况下可能会带来额外的复杂性。缺乏条件变量与ReentrantLock和ReentrantReadWriteLock不同StampedLock没有提供与条件变量Condition相关的功能使得它在需要等待/通知机制的复杂同步场景中不够灵活。 使用建议 如果读操作远多于写操作且不需要重入锁或条件变量支持那么StampedLock可能是一个不错的选择。要特别注意正确地管理锁的生命周期和戳记的验证过程以避免死锁和其他同步问题。对于复杂的同步场景或需要等待/通知机制的情况ReentrantLock或ReentrantReadWriteLock会具有一定的优势。 StampedLock和ReentrantReadWriteLock有什么区别 StampedLock和ReentrantReadWriteLock都是Java中用于同步的机制它们允许多个线程同时读取共享资源但在写入时要求独占访问尽管它们的目的相似但在设计、性能和适用场景上存在一些关键区别 在设计上 StampedLock: 是一个非重入锁意味着同一个线程不能重复获取同一个锁无论是读锁还是写锁StampedLock提供了三种访问模式读锁、写锁和乐观读乐观读是一种非阻塞的读取策略它允许线程在不阻塞的情况下尝试读取数据然后通过验证一个“戳记”stamp来确认数据在读取过程中没有被修改。ReentrantReadWriteLock: 是一个重入锁允许同一个线程多次获取同一个锁这在递归算法或需要锁跨越多个方法调用时非常有用它只提供两种访问模式读锁和写锁。 在性能上 StampedLock: 通常在读操作远多于写操作的场景中提供更好的性能由于StampedLock支持乐观读这可以避免不必要的上下文切换和线程阻塞从而提高吞吐量此外StampedLock在读锁之间没有互斥允许多个线程同时持有读锁。ReentrantReadWriteLock: 在读锁和写锁之间的切换上可能不如StampedLock高效尤其是在高并发环境下然而在需要重入锁的场景中它是更具有优势。 在适用场景上 StampedLock: 适用于读多写少的高并发场景且当线程不需要在持有锁的情况下调用其他可能也需要该锁的方法时由于它的非重入性使用StampedLock需要更仔细地管理锁的生命周期以避免死锁。ReentrantReadWriteLock: 更适用于需要锁的可重入性的场景如递归算法或需要在持有锁的情况下调用其他可能也需要该锁的方法的情况此外在写操作相对频繁或读/写操作分布更均匀的场景中ReentrantReadWriteLock更具有优势。 其他对比 公平性: ReentrantReadWriteLock允许在构造函数中指定公平性策略即线程获取锁的顺序而StampedLock不支持公平性设置。条件变量: ReentrantReadWriteLock与ReentrantLock类似可以与Condition对象一起使用以支持等待/通知机制而StampedLock不提供条件变量因此不适用于需要等待某个条件的场景。 END
http://www.pierceye.com/news/969906/

相关文章:

  • 摄影师都在哪些网站发布作品云虚拟主机搭建网站
  • 中小企业电子商务网站建设传奇手游代理平台
  • 网站建设需要每年交钱吗如何选择宣传片制作
  • 建设网站为网站网站做广告芜湖市网站建设
  • 网站建设和维护怎么学android开发编辑wordpress
  • 有哪些学做衣服的网站生产管理软件app
  • 网站换域名 蜘蛛不来广告宣传片制作公司
  • 百度做个网站要多少钱如何在淘宝网做自己的网站
  • 网站建设属于营业范围里的哪一项深圳外贸建站网络推广联客易
  • 网站开发公司 郑州wordpress 服务器环境
  • 网站搭建什么意思砀山做网站
  • 营销型网站服务长沙做网站费用
  • 提供信息门户网站定制怎样做wordpress模板
  • 做爰小视频网站如何制作淘宝客网站
  • 公司架设网站费用怎么做分录linux网站开发软件
  • 网站可信图标精品网站建设费用 地址磐石网络
  • 朝阳住房和城乡建设厅网站学佛网站开发项目需求分析
  • 做快递单的网站会不会是骗人的网站推广营销收费
  • 网站设计师需要学什么wordpress focus
  • 查询网网站十大求职招聘app排行
  • 百度 搜索到手机网站wordpress百科汉化
  • 自己做的网站点击赚钱徐州万网网站建设
  • 网站定制生成器网页制作需要会哪些
  • 最重要的网站官方网站手机 优帮云
  • 建一个展示网站下班多少钱怎样给一个公司做网站改版
  • wordpress 网站死机php7.0 wordpress 设置
  • 免版权费自建网站自考本科官网
  • 使用ai做网站设计长沙建设网站哪家好
  • 建设行业网站价格公共服务标准化建设
  • 电商网站开发发展和前景网站建设案例多少钱