AQS
2017-02-04 18:12:07 0 举报
AQS(Advanced Queueing System)是一种先进的排队系统,它通过使用先进先出(FIFO)队列来管理任务的执行顺序。这种系统可以确保任务按照预定的顺序和优先级得到处理,从而提高了系统的性能和效率。AQS广泛应用于各种场景,如操作系统调度、网络通信、数据库事务处理等。通过使用AQS,可以实现对任务的公平分配、资源的有效利用以及系统的可扩展性。总之,AQS是一种强大的排队管理工具,为各种复杂系统的高效运行提供了有力支持。
作者其他创作
大纲/内容
s.acquire()
Semaphore
doAcquireSharedInterruptibly
state-1 >=0 申请到锁
NODE2prev = NODE1next = nulltthread = 线程1
doReleaseShared()
tail
head
NODE3prev = NODE2next = nulltthread = 线程2
后端服务
addWaiter(Node.SHARED)
business worker
TABLE
AbstractQueuedSynchronizer
node对象
NODE
数据服务层
Node head
Node tail
volitie state:根据不同的实现子类不同的含义
锁申请数量
pre worker
如果申请不到锁,该线程挂起, LockSupport.park(this); return Thread.interrupted();
head头
前端服务(web)
AbstractQueuedSynchronizer(AQS)Semaphore:非公平锁,共享锁
addWaiter
导出excle
Semaphore代码使用
NODE1prev = NULLnext = NODE2
继续申请锁的过程
调度服务
tryAcquireShared
释放锁 state + 1
线程2
hashmap产生死循环列表
尝试申请锁
Node SHARED 共享模式Node EXCLUSIVE 独占Node prev 前置指向Node next 后置指向Thread thread 当前线程int waitStatus 当前线程wait状态,4种值int CANCELLED = 1int SIGNAL = -1PROPAGATE = -3
对比结果(db)
内部系统
ReentrantLock Semaphore
云造价平台
NODE1prev = NULLnext = null
NODE2prev = NODE1next = NODE2tthread = 线程1
导出Excle服务
唤起在队列中阻塞中的线程,尝试继续申请锁 LockSupport.unpark(s.thread);
Sync sync
head尾
unparkSuccessor(h)
OSS
申请不公平锁,设置state = 1
tryReleaseShared
缓存(redis)
Semaphore s = new Semaphore(10)NonfairSync(permits)
nginx
WEB服务
releaseShared
线程1
0 条评论
下一页