当前位置:网站首页>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
边栏推荐
- MATLB | multi micro grid and distributed energy trading
- One click generation and conversion of markdown directory to word format
- Go RPC call
- How to build a technical team that will bring down the company?
- [source code attached] Intelligent Recommendation System Based on knowledge map -sylvie rabbit
- Win:将一般用户添加到 Local Admins 组中
- Yyds dry inventory swagger positioning problem ⽅ formula
- The steering wheel can be turned for one and a half turns. Is there any difference between it and two turns
- 如何做一个炫酷的墨水屏电子钟?
- Advanced conditional statements of common SQL operations
猜你喜欢
CAM Pytorch
Icu4c 70 source code download and compilation (win10, vs2022)
The steering wheel can be turned for one and a half turns. Is there any difference between it and two turns
Interesting practice of robot programming 16 synchronous positioning and map building (SLAM)
[source code attached] Intelligent Recommendation System Based on knowledge map -sylvie rabbit
Restful fast request 2022.2.1 release, support curl import
[OpenGL learning notes 8] texture
Stored procedure and stored function in Oracle
Introduce reflow & repaint, and how to optimize it?
Do you know the eight signs of a team becoming agile?
随机推荐
Start the remedial work. Print the contents of the array using the pointer
Redis distributed lock, lock code logic
[understanding of opportunity -38]: Guiguzi - Chapter 5 flying clamp - warning one: there is a kind of killing called "killing"
Tla+ through examples (XI) -- propositional logic and examples
Pgadmin 4 V6.5 release, PostgreSQL open source graphical management tool
Chinese natural language processing, medical, legal and other public data sets, sorting and sharing
Interesting practice of robot programming 15- autoavoidobstacles
Incremental backup? db full
Richview trvunits image display units
CAM Pytorch
Last week's hot review (2.7-2.13)
A tab Sina navigation bar
Summary and practice of knowledge map construction technology
85.4% mIOU! NVIDIA: using multi-scale attention for semantic segmentation, the code is open source!
Video display and hiding of imitation tudou.com
Visual explanation of Newton iteration method
Can you really learn 3DMAX modeling by self-study?
Which common ports should the server open
力扣剑指offer——二叉树篇
. Net starts again happy 20th birthday