当前位置:网站首页>Kotlin - coroutine
Kotlin - coroutine
2022-07-05 02:18:00 【A lazy programmer】
Concept
- coroutines : The essence is the thread framework . A set of based on Thread( Threads ) Packaged Tools API( It's like Java Of Executor 、Android Of AsyncTask Handler as well as RxJava).
- Suspend function :
- The nature of suspension : After the thread is executed, it will automatically cut back to continue .
- The suspended function suspends the currently executing coroutine , Then execute your own coordination process . At this point, the suspended coroutine and the thread executing it will be separated , The thread continues to perform other tasks or has nothing to do ( It's the way it was , Recycle or reuse ), When the suspended function finishes executing, it will cut back to continue executing the suspended coroutine . These coroutines are executed in their respective designated threads ( Created by Dispatchers Schedule instead of Thread, Because it will cut back rather than simply specify the thread ), They are written in the same code block with intuitive logical order .
- Due to the elimination of callback nesting, you can customize the hang function :
- When to define : When time-consuming operations are needed (I/O、 Calculation 、 wait for ) Will suspend the current collaboration .
- suspend keyword : It is used to restrict the function to be called only in the coroutine or in other suspended functions , because “ Hang up -> After execution -> Cut back ” It can only be achieved by using it in the collaboration process . The real hang operation depends on the hang function of the coroutine finally called . There are also reminders “ It's a time-consuming operation , Is the hang function to be used in the coroutine ” It means .
- Non-blocking type : The essence is not to jam threads . Compare with others based on Java Multithreading solutions for , The advantage of synergetic process is to rely on Kotlin The advantages of language , Let's make it convenient to use the same code block ( Scope ) Thread switching in ( It seems that asynchronous code is written synchronously ), That is, the code originally written in serial is now written in parallel ( The code in the same code block is executed in the same thread ( A single thread is a blocking operation, and it will jam the thread if it does time-consuming operations , Cutting threads will not block the threads before ),Java Thread cutting will cause complex callback relationships to be nested in callbacks , The coroutine switches the thread by suspending the function, and will return after execution to continue , Write up and down in the same code block , Logical intuition and elimination of template code ), Eliminate the operation difficulty of multi-threaded asynchronous collaborative tasks .
Process scope CoroutineScope
Collaboration context CoroutineContext
The process creates CoroutineBuilder
Suspend function Suspend Function
ViewModelKTX
LifeCycleKTX
边栏推荐
- Do you know the eight signs of a team becoming agile?
- Official announcement! The third cloud native programming challenge is officially launched!
- [Yu Yue education] National Open University spring 2019 0505-22t basic nursing reference questions
- 使用druid连接MySQL数据库报类型错误
- Mysql database | build master-slave instances of mysql-8.0 or above based on docker
- Word processing software
- Win: use shadow mode to view the Desktop Session of a remote user
- Yyds dry inventory jetpack hit dependency injection framework Getting Started Guide
- What is the length of SHA512 hash string- What is the length of a hashed string with SHA512?
- Application and Optimization Practice of redis in vivo push platform
猜你喜欢
Runc hang causes the kubernetes node notready
Matrixone 0.2.0 is released, and the fastest SQL computing engine is coming
Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool
Win: use PowerShell to check the strength of wireless signal
丸子百度小程序详细配置教程,审核通过。
[Digital IC hand tearing code] Verilog edge detection circuit (rising edge, falling edge, double edge) | topic | principle | design | simulation
Yolov5 model training and detection
Prometheus monitors the correct posture of redis cluster
Restful Fast Request 2022.2.1发布,支持cURL导入
A label colorful navigation bar
随机推荐
187. Repeated DNA sequence - with unordered_ Map basic content
CAM Pytorch
runc hang 导致 Kubernetes 节点 NotReady
Tucson will lose more than $400million in the next year
Summary of regularization methods
A tab Sina navigation bar
R语言用logistic逻辑回归和AFRIMA、ARIMA时间序列模型预测世界人口
[技术发展-26]:新型信息与通信网络的数据安全
Three properties that a good homomorphic encryption should satisfy
220213c language learning diary
February database ranking: how long can Oracle remain the first?
Li Kou Jianzhi offer -- binary tree chapter
MySQL backup and recovery + experiment
"C zero foundation introduction hundred knowledge and hundred cases" (72) multi wave entrustment -- Mom shouted for dinner
Outlook:总是提示输入用户密码
Asynchronous and promise
Educational Codeforces Round 122 (Rated for Div. 2) ABC
What is the length of SHA512 hash string- What is the length of a hashed string with SHA512?
Rabbit MQ message sending of vertx
Bert fine tuning skills experiment