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

网站免费推广计划怎么推广公司

网站免费推广计划,怎么推广公司,网站的开发方式,wordpress页面文件目录目录 AQS是什么AQS什么样内部类成员变量方法public如果不使用AQS会怎样 AQS的应用ReentrantLockSyncNonfairSyncFairSync 其他实现 AQS是什么 AbstractQueuedSynchronizer#xff08;AQS#xff09;是Java中的一个并发工具#xff0c;位于java.util.concurrent.locks包中AQS是Java中的一个并发工具位于java.util.concurrent.locks包中用于实现基于锁的同步机制。它是许多同步类如ReentrantLock和Semaphore等的基础并提供了一种用于实现独占锁exclusive locks和共享锁shared locks等同步机制的框架。 AQS是一个抽象类它通过维护一个等待队列来管理线程的同步状态。它的主要设计思想是当某个线程尝试获取锁时如果锁不可用该线程会被放入等待队列然后被阻塞。当锁释放时AQS会从等待队列中唤醒适当的线程使其能够竞争锁。 AQS什么样 内部类 类名作用NodeNode类表示等待队列中的一个节点用于构建等待队列、实现线程的阻塞与唤醒以及表示等待线程。ExclusiveNodeExclusiveNode是Node类的子类表示独占模式exclusive mode下的节点用于独占锁的等待队列。SharedNodeSharedNode是Node类的子类表示共享模式shared mode下的节点用于共享锁的等待队列。ConditionNodeConditionNode是Node类的子类表示条件等待队列中的节点用于支持条件变量的等待和唤醒机制。ConditionObjectConditionObject是AbstractQueuedSynchronizer的内部类用于实现条件变量允许线程等待特定条件。 这些内部类在AbstractQueuedSynchronizer的实现中扮演着不同的角色从构建等待队列、表示等待线程、实现条件等待机制到支持不同模式的锁等待。通过这些内部类的使用AQS能够支持各种同步场景和锁的实现从而实现多线程的协调和同步。 成员变量 先看看AQS里都有哪些成员变量 当然我可以为您解释这些成员变量的作用。以下是您列出的成员变量的简要解释和作用的表格展示 变量名变量类型变量作用WAITINGint表示线程处于等待状态即等待获取锁。CANCELLEDint表示线程在等待队列中等待时被取消即等待被中断或其他原因取消。CONDNode一个特殊的标识用于表示等待队列中的节点是一个条件等待节点而不是独占或共享模式的节点。headNode等待队列中的头节点即队列中等待时间最长的节点。tailNode等待队列中的尾节点即队列中等待时间最短的节点。stateint表示同步状态的变量可以是任意整数值根据具体实现的需要来表示不同的状态。UUnsafe提供了一些底层的操作允许直接对内存进行操作用于实现一些底层同步原语。STATElong一个偏移量用于表示在AbstractQueuedSynchronizer类中用于操作state变量的偏移量。HEADlong一个偏移量用于表示在AbstractQueuedSynchronizer类中用于操作head变量的偏移量。TAILlong一个偏移量用于表示在AbstractQueuedSynchronizer类中用于操作tail变量的偏移量。 这些成员变量在AbstractQueuedSynchronizer中用于维护等待队列、线程状态和同步状态等信息从而实现了基于队列的线程同步和协调机制。不同的变量在整个机制中扮演着不同的角色以实现正确的多线程同步行为。 方法public 我们来看一下AQS都提供了哪些方法 方法名参数含义方法作用acquireint arg请求获取锁的参数尝试获取锁如果获取不到则将调用线程置于阻塞状态直到锁可用或线程被中断。acquireInterruptiblyint arg请求获取锁的参数类似于acquire但是允许线程在等待锁的过程中被中断。如果线程在等待时被中断会抛出InterruptedException异常。tryAcquireNanosint arg请求获取锁的参数long nanosTimeout等待时间尝试获取锁但最多等待指定的时间。如果在超时前未能获取锁则返回结果指示是否成功获取。releaseint arg释放锁的参数释放锁通常在获取锁成功后调用。释放锁会唤醒等待队列中的其他线程使其有机会竞争锁。acquireSharedint arg请求获取共享锁的参数类似于acquire但是用于共享锁的获取。多个线程可以同时获取共享锁而不像独占锁一样只能有一个线程持有。acquireSharedInterruptiblyint arg请求获取共享锁的参数类似于acquireShared但是允许线程在等待共享锁的过程中被中断。如果线程在等待时被中断会抛出InterruptedException异常。tryAcquireSharedNanosint arg请求获取共享锁的参数long nanosTimeout等待时间类似于tryAcquireNanos但是用于共享锁的获取。releaseSharedint arg释放共享锁的参数释放共享锁通常在获取共享锁成功后调用。释放共享锁会唤醒等待队列中的其他线程使其有机会竞争锁。hasQueuedThreads-判断是否有线程在等待队列中等待获取锁。hasContended-判断是否有线程在竞争锁。getFirstQueuedThread-获取等待队列中的第一个线程但不移除。isQueuedThread thread要检查的线程判断指定线程是否在等待队列中等待获取锁。apparentlyFirstQueuedIsExclusive-判断等待队列中的第一个线程是否为独占模式exclusive mode线程。hasQueuedPredecessors-判断调用线程是否有在等待队列中的前驱线程。如果有前驱线程则可能需要执行阻塞操作。getQueueLength-获取等待队列中的线程数。getQueuedThreads-获取在等待队列中等待获取锁的所有线程。getExclusiveQueuedThreads-获取在等待队列中等待获取独占锁的所有线程。getSharedQueuedThreads-获取在等待队列中等待获取共享锁的所有线程。toString-返回对象的字符串表示通常包括等待队列中的线程信息。ownsThread thread要检查的线程判断指定线程是否是当前持有锁的线程。hasWaiters-判断是否有线程在等待队列中等待释放锁。getWaitQueueLength-获取等待队列中等待释放锁的线程数。getWaitingThreadsCondition condition相关的条件获取与指定条件相关的等待线程列表。 这些方法是AbstractQueuedSynchronizer类的核心方法用于实现多线程同步和协调。 如果不使用AQS会怎样 AQS的应用 我们来直接举个例子 ReentrantLock ReentrantLock中有3个内部类 Sync AQS的子类其实基本上实现了ReentrentLock的大部分方法ReentrentLock开放出来的大部分方法其实都是直接调用的Sync里的方法 方法名参数含义方法作用tryLocklong timeout, TimeUnit unit尝试获取锁如果锁没有被其他线程持有则获取锁并返回true如果在指定的时间内无法获取锁则返回false。initialTryLock-作为tryLock的一种形式是在ReentrantLock的构造函数中使用的用于初始化锁。lock-获取锁如果锁已经被其他线程持有则当前线程会被阻塞直到获取到锁。lockInterruptibly-获取锁如果锁已经被其他线程持有允许线程在等待时被中断。如果线程在等待时被中断会抛出InterruptedException异常。tryLockNanoslong timeout尝试在指定的时间内获取锁如果锁没有被其他线程持有则获取锁并返回true。如果在指定的时间内无法获取锁则返回false。tryRelease-尝试释放锁。isHeldExclusively-判断当前线程是否持有独占锁。newCondition-创建一个新的Condition对象用于支持条件等待。getOwner-获取当前持有独占锁的线程如果没有线程持有锁返回null。getHoldCount-获取当前线程持有锁的次数用于可重入锁的计数。isLocked-判断锁是否被任何线程持有。 NonfairSync Sync的子类非公平锁的实现。 方法名参数作用initialTryLockunused尝试获取锁,如果获取成功返回true,失败返回false。该方法只在构造方法中调用一次。tryAcquireacquires独占式尝试获取同步状态。如果获取成功返回true,否则返回false。 FairSync Sync的子类公平锁的实现 方法名参数作用initialTryLockunused尝试获取锁,当等待队列无线程等待并且state为0。不同于NonfairSync,公平锁只有无竞争时才会尝试获取锁。tryAcquireacquires尝试获取同步状态,如果队列中第一个节点是当前线程就获取成功,不是则失败。 FairSync也继承自AQS,但实现了公平的锁获取语义 - 等待时间最长的线程最先获得锁。 这两个类开始起作用是在创建ReentrentLock的时候这里 其他实现 CountDownLatch: 用来进行线程之间同步协作,可以实现一个线程等待其他线程完成某件事情之后再执行。CyclicBarrier: 用来进行线程之间同步协作,可以实现让一组线程达到一个屏障时被阻塞,直到最后一个线程到达屏障时屏障才会开门,所有被屏障拦截的线程才会继续执行。Semaphore: 用于控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。Exchanger: 用于进行线程间的数据交换。它提供一个同步点,在这个同步点,两个线程可以交换彼此的数据。BlockingQueue: 一个支持两个附加操作的队列。在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。ForkJoinPool: Fork/Join框架中的线程池实现类,用于异步执行fork/join任务。
http://www.dnsts.com.cn/news/57896.html

相关文章:

  • 网站后台什么语深圳服务网站入口
  • 上海网站制作是什么网站运营怎么学
  • 网络营销是什么内容搜索引擎优化的核心及内容
  • html代码软件阳泉seo
  • 网站建设 人员 年终总结百度指数排行榜
  • 陇南市响应式网站建设科技公司名称大全简单大气
  • 毕业设计做网站 答辩会问什么问题厦门礼品网站商城制作案例
  • 做网站需要掌握什么软件定制wordpress
  • 网站推广排名平台工业信息化网站备案系统
  • 网站设计 开发人员登陆网站空间的后台
  • 化工网站建设怎么找关键词
  • 做棋盘游戏辅助的网站特效素材免费下载网站
  • 主机开通成功网站建设中wordpress 3.5.2 漏洞
  • 网站建设基础问题如何上传网站数据库
  • 广东企业移动网站建设哪家好asp网站咋做
  • 小明seo教程为什么做网站结构优化
  • 兰州市住房城乡建设局网站河北建基官网
  • 为推广网站做的宣传活动wordpress 飘窗
  • 外贸网站建设费用一般要多少怎么用手机做抖音上最火的表白网站
  • wordpress 编辑权限 发文章惠州网站建设乐云seo在线制作
  • 网站查询服务器58同城石家庄网站建设
  • 青海建设厅官方网站如何做制作头像的网站
  • 温州网站设计公司个人备案经营网站
  • 凡科建站怎么导出网页一套会员管理系统多少钱
  • 网站一般用什么服务器网上挣钱
  • 网站建设公司考察郑州的建设网站有哪些手续费
  • 网站建设工作分解结构图或表wordpress转入插件
  • 免费建站平台哪个好重庆建网站公司
  • 苏州网站设计kgwl为什么网站要域名解析
  • 网站建设方法冫金手指排名26企业为什么要纳税