当前位置:网站首页>Condition and AQS principle
Condition and AQS principle
2022-07-06 01:10:00 【@Overstep】
Condition brief introduction
Any one of them java Objects are all inherited from Object class , Communication between online programs is often applied to Object Several methods of , such as wait(),wait(long timeout),wait(long timeout, int nanos) And notify(),notifyAll() Several ways to implement wait / A notification mechanism , alike , stay java Lock Under the system, there will still be the same way to achieve waiting / A notification mechanism . On the whole Object Of wait and notify/notify It is to cooperate with the object monitor to complete the inter thread waiting / A notification mechanism , and Condition And Lock Cooperate with the completion waiting notification mechanism , The former is java At the bottom level , The latter is at the language level , It has higher controllability and expansibility . The two are different in use , There are still many differences in functional features :
- Condition Can support no response interrupt , But by using Object The way doesn't support ;
- Condition Can support multiple waiting queues (new Multiple Condition object ), and Object Only one... Can be supported ;
- Condition It can support the setting of timeout time , and Object I won't support it
Condition analysis :
(1)Condition The essence of waiting for notification is waiting queue and The interactive process of synchronizing queues , Follow object Of wait()/notify() The mechanism is the same ;Condition Based on synchronous lock state Realized , and objec Is based on monitor Pattern implementation .
(2) One lock(AQS) There can be multiple Condition, That is, multiple waiting queues , There is only one synchronization queue .
(3)Condition.await() Method execution , Will synchronize the... In the queue head Lock released , Encapsulate threads into new node Add to the waiting queue ;Condition.signal() Method execution , The first node in the waiting queue will be moved to the synchronization queue , Until the lock state It's only when you get it that you wake up .
AQS Principle Overview
It's a framework for building locks and synchronizers , Use AQS A large number of synchronizers can be constructed simply and efficiently
AQS The core idea is , If the requested shared resource is free , Set the thread of the current request resource to a valid worker thread , And set the shared resources to the locked state . If the requested shared resource is occupied , Then we need a set of mechanism for thread blocking waiting and lock allocation when it is awakened , This mechanism AQS Yes, it is CLH The implementation of queue lock , Join the queue with the thread temporarily unable to acquire the lock .
CLH(Craig,Landin,andHagersten) A queue is a virtual two-way queue ( Virtual two-way queue means there is no queue instance , There is only an association between nodes ).AQS It is to encapsulate each thread requesting shared resources into a CLH A node in a lock queue (Node) To achieve lock allocation .
AQS Define two ways to share resources
1)Exclusive( Monopoly )
Only one thread can execute , Such as ReentrantLock. It can be divided into fair lock and unfair lock ,ReentrantLock Two locks are supported at the same time , Let's say ReentrantLock Introduce the definition of these two kinds of locks :
- Fair lock : In the order in which threads are queued in the queue , First come, first get the lock
- Not fair lock : When a thread wants to acquire a lock , Pass it twice first CAS Operate to grab the lock , If you don't get , The current thread then joins the queue waiting for wakeup .
2)Share( share )
边栏推荐
- For a deadline, the IT fellow graduated from Tsinghua suddenly died on the toilet
- MYSQL GROUP_ The concat function realizes the content merging of the same ID
- logstash清除sincedb_path上传记录,重传日志数据
- Blue Bridge Cup embedded stm32g431 - the real topic and code of the eighth provincial competition
- Four dimensional matrix, flip (including mirror image), rotation, world coordinates and local coordinates
- Promise
- FFT learning notes (I think it is detailed)
- [groovy] JSON string deserialization (use jsonslurper to deserialize JSON strings | construct related classes according to the map set)
- servlet(1)
- 直播系统代码,自定义软键盘样式:字母、数字、标点三种切换
猜你喜欢

程序员搞开源,读什么书最合适?
![Cf:h. maximum and [bit operation practice + K operations + maximum and]](/img/c2/9e58f18eec2ff92e164d8d156629cf.png)
Cf:h. maximum and [bit operation practice + K operations + maximum and]

激动人心,2022开放原子全球开源峰会报名火热开启

Unity | 实现面部驱动的两种方式

测试/开发程序员的成长路线,全局思考问题的问题......

Test de vulnérabilité de téléchargement de fichiers basé sur dvwa

What is the most suitable book for programmers to engage in open source?

JVM_ 15_ Concepts related to garbage collection

KDD 2022 | EEG AI helps diagnose epilepsy

Starting from 1.5, build a micro Service Framework - call chain tracking traceid
随机推荐
Arduino hexapod robot
激动人心,2022开放原子全球开源峰会报名火热开启
详细页返回列表保留原来滚动条所在位置
[groovy] compile time metaprogramming (compile time method interception | find the method to be intercepted in the myasttransformation visit method)
curlpost-php
Cf:d. insert a progression [about the insert in the array + the nature of absolute value + greedy top-down]
[groovy] compile time meta programming (compile time method interception | method interception in myasttransformation visit method)
基于DVWA的文件上传漏洞测试
Dede collection plug-in free collection release push plug-in
Opinions on softmax function
After Luke zettlemoyer, head of meta AI Seattle research | trillion parameters, will the large model continue to grow?
Convert binary search tree into cumulative tree (reverse middle order traversal)
What is the most suitable book for programmers to engage in open source?
Differences between standard library functions and operators
DD's command
RAID disk redundancy queue
Installation and use of esxi
The population logic of the request to read product data on the sap Spartacus home page
Obstacle detection
Beginner redis
