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

网站备案进度商务网站开发报告

网站备案进度,商务网站开发报告,宁波网站制作公司费用价格,网站开发毕业设计源码目录 1. synchronized关键字 1.1 基本概念 1.2 内置锁 1.3 限制 2. ReentrantLock 2.1 概述 2.2 公平性与非公平性 2.3 条件变量 3. 读写锁#xff08;ReadWriteLock#xff09; 3.1 概念 3.2 适用场景 4. StampedLock 4.1 概述 4.2 乐观读与悲观读 4.3 适用场…目录 1. synchronized关键字 1.1 基本概念 1.2 内置锁 1.3 限制 2. ReentrantLock 2.1 概述 2.2 公平性与非公平性 2.3 条件变量 3. 读写锁ReadWriteLock 3.1 概念 3.2 适用场景 4. StampedLock 4.1 概述 4.2 乐观读与悲观读 4.3 适用场景 5. 性能比较与选择 6. 总结 在Java编程中多线程并发是一个常见的场景。为了保证线程安全性Java提供了一系列的锁机制用于控制对共享资源的访问。这些锁机制在并发编程中起着至关重要的作用确保多个线程能够协同工作而不产生竞态条件或数据不一致的问题。本文将深入探讨Java中的锁机制包括传统的synchronized关键字、ReentrantLock类以及更为高级的读写锁和StampedLock。 1. synchronized关键字 1.1 基本概念 Java的synchronized关键字是最基本的锁机制之一。它可以用来修饰方法或代码块确保同一时刻只有一个线程能够访问被锁定的代码。 public synchronized void synchronizedMethod() {// 线程安全的操作 }1.2 内置锁 synchronized使用的是内置锁也称为监视器锁。每个Java对象都有一个与之关联的内置锁通过synchronized关键字可以对这个锁进行操作。当一个线程试图访问一个被synchronized修饰的方法或代码块时它会尝试获取对象的内置锁如果锁已经被其他线程占用那么线程将被阻塞直到获取到锁为止。 1.3 限制 虽然synchronized是简单易用的锁机制但它也有一些限制。首先它是非公平的不能保证等待时间最长的线程会最先获得锁。其次一旦线程进入synchronized代码块其他线程必须等待不能中途取消。 2. ReentrantLock 2.1 概述 ReentrantLock是Java.util.concurrent包中提供的一种更灵活的锁机制。与synchronized不同ReentrantLock允许线程在获得锁之后再次进入同步代码块即支持重入。 import java.util.concurrent.locks.ReentrantLock;public class ReentrantLockExample {private final ReentrantLock lock new ReentrantLock();public void someMethod() {lock.lock();try {// 线程安全的操作} finally {lock.unlock();}} }2.2 公平性与非公平性 ReentrantLock提供了公平性选择。在构造函数中可以选择是否使用公平锁。公平锁按照线程请求锁的顺序进行获取而非公平锁允许插队可能会导致某些线程一直获取不到锁。 ReentrantLock fairLock new ReentrantLock(true); // 公平锁 ReentrantLock unfairLock new ReentrantLock(); // 非公平锁2.3 条件变量 ReentrantLock还支持条件变量可以通过newCondition方法创建。条件变量允许线程在获取锁之后等待或者唤醒提供了更为灵活的线程通信方式。 import java.util.concurrent.locks.Condition;public class ReentrantLockWithCondition {private final ReentrantLock lock new ReentrantLock();private final 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();}} }3. 读写锁ReadWriteLock 3.1 概念 ReadWriteLock接口提供了一种更为精细的锁分离机制分为读锁和写锁。读锁可以被多个线程同时持有但写锁是独占的只能被一个线程持有。 import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock;public class ReadWriteLockExample {private final ReadWriteLock readWriteLock new ReentrantReadWriteLock();public void readMethod() {readWriteLock.readLock().lock();try {// 执行读操作} finally {readWriteLock.readLock().unlock();}}public void writeMethod() {readWriteLock.writeLock().lock();try {// 执行写操作} finally {readWriteLock.writeLock().unlock();}} }3.2 适用场景 ReadWriteLock适用于读多写少的场景可以提高系统的并发性能。读锁的共享特性使得多个线程可以同时读取共享资源而写锁的独占特性保证了写操作的原子性。 4. StampedLock 4.1 概述 StampedLock是Java 8引入的新锁机制结合了读写锁和乐观锁的特点。它引入了stamp的概念用来标记锁的状态。 import java.util.concurrent.locks.StampedLock;public class StampedLockExample {private final StampedLock stampedLock new StampedLock();public void readMethod() {long stamp stampedLock.tryOptimisticRead();try {// 乐观读操作if (!stampedLock.validate(stamp)) {// 转为悲观读stamp stampedLock.readLock();try {// 执行悲观读操作} finally {stampedLock.unlockRead(stamp);}}} finally {stampedLock.unlock(stamp);}}public void writeMethod() {long stamp stampedLock.writeLock();try {// 执行写操作} finally {stampedLock.unlockWrite(stamp);}} } 4.2 乐观读与悲观读 StampedLock引入了乐观读和悲观读的概念。在乐观读模式下线程尝试获取一个标记stamp然后进行读操作最后通过validate方法验证标记是否仍然有效。如果标记无效表示在读操作期间有写操作发生需要切换为悲观读模式。悲观读模式下线程直接获取读锁执行读操作然后释放读锁。 4.3 适用场景 StampedLock适用于读操作远远多于写操作的情况并且乐观读是常态的场景。相较于ReadWriteLockStampedLock提供了更高的并发性能。 5. 性能比较与选择 在选择锁的时候需要根据具体的业务场景和性能需求来进行权衡。以下是一些选择锁的一些建议 如果并发要求不高可以使用synchronized关键字它简单易用不需要手动释放锁适用于简单的线程同步场景。 如果需要更灵活的控制和可重入特性可以选择ReentrantLock并且可以根据实际情况选择公平锁或非公平锁。 如果读操作远远多于写操作可以选择ReadWriteLock提高系统的并发性能。 如果乐观读是常态并且读操作频繁可以考虑使用StampedLock它提供了更高的并发性能。 6. 总结 Java中的锁机制为多线程编程提供了强大的支持开发人员可以根据实际需求选择合适的锁来保证线程安全性。从简单的synchronized关键字到更为灵活的ReentrantLock再到适用于读多写少场景的ReadWriteLock以及引入了乐观读的StampedLockJava提供了丰富的锁机制帮助开发人员更好地处理并发编程中的各种情况。在实际应用中合理选择锁机制是提高系统性能和稳定性的关键一步。
http://wiki.neutronadmin.com/news/301786/

相关文章:

  • 网站制作公司dedecms建工网招聘
  • 扬州市广陵区建设局网站在线编辑器
  • 南宁市建设厅官方网站个人网站开发 服务器
  • 模板站怎么改成营销型网站wordpress用户上传资源验证码
  • 小说网站开发需求企业网站设计开发服务
  • 公司增加英文网站要怎么做网页设计建立站点步骤
  • 网站建设价格制定的方法wordpress首次请求慢
  • 免费网站成品怎么做提卡密网站
  • 在线支付网站建设交互式网站
  • 专业的河南网站建设公司排名成都专业seo公司
  • 南宁网站建设是什么意思专门做2次元图片的网站
  • 美容茌哪个网站做宣传好检测网站安全
  • 彩票网站建设教程沈阳做网站制作的公司
  • google网站优化器自己创造网站平台
  • 深圳设计网站多少钱做网站法人拍照背景
  • 替换wordpress后台登录logo石家庄百度搜索引擎优化
  • 苏州知名网站制作重庆装修论坛
  • 手机网站被拦截怎么解除中铁建设集团有限公司网站
  • 2021没封的网站uc做积分商城网站
  • linux系统服务器怎么做网站网站没内容
  • 带有客户案例的网站公司名称大全集最新3个字
  • 网站页面做成自适应优缺点为什么我的网站百度不收录
  • 做界面网站用什么语言济宁网站建设流程
  • 网站改版设计流程网络推广哪个公司好
  • 网站打不开怎么办山东网站建设培训
  • 企业内部网站建设工厂怎么推广自己的产品
  • 深深圳市建设局网站做网上推广网站
  • 网站加强队伍建设全国小微企业名录查询官网
  • php购物网站开发桂林网站设计制作
  • 做网站和c 哪个好天猫网站是怎么做seo优化的