当前位置:网站首页>2.6 preliminary cognition of synergetic couroutines
2.6 preliminary cognition of synergetic couroutines
2022-07-03 12:14:00 【schr03p】
coroutines Couroutines My initial understanding
One 、 What is? Kotlin coroutines
coroutines (Coroutine) Is the collaborative program , and Kotlin Synergy is a process based on Java Thread API Packaged toolkit , Help us easily write complex concurrent code
kotlin Compared with thread pool , There is no performance advantage
Non blocking suspension is nothing special ,java Sub threads are also non blocking
If you are familiar with Rxjava, Compare the process again , You will find that the synergy ratio Rxjava It works
Solve the problem of callback to hell
Two 、Coroutines The advantages of 、 characteristic
Light weight
The essence , Convenient for multi-threaded development
Thread pool
Network library support , Light and elegant
3、 ... and 、 Quick view of knowledge points
Common coprocessing functions
Function name | Brief features |
---|---|
runBlocking:T | Internal coordination process started , Meeting Blocking Current thread , until block The execution of the coordination process in the end . Common methods of calling coprocessor functions |
launch:Job | The most commonly used way to start the process ; return Job object , operational Job; It won't block Current calling thread ; |
async:Deferred | Be similar to launch, Start asynchronous ; Can be used for multiple concurrency ;await Consolidated results |
CoroutineContext
Dispatchers.Main、
Dispatchers.IO、Dispatchers.default( Execute... In the process pool )
Dispatchers.Unconfined
LauncherMode
Mode Value default Default , Execute the program immediately lazy Execute when needed atomic Execute now , Operation atomization , Cannot cancel before starting undispatched Execute immediately on the current thread , Until the first one suspend call suspend function
suspend function Will bring the whole coroutines Hang up , Not just this suspend function , That is to say a coroutines There are multiple Suspend function when , They are executed sequentially
resume
The call stack
Scope
UI
ViewModel
Four 、 The way to deal with asynchrony
Threads
Commonly used , Simple and convenient
resource consumption
The number is limited
Platform support (JS There is no thread )
Inconvenient to debug
Callback
Hierarchical call
Multiple nesting
Error handling is troublesome
Futures、 Promise
Programming elegance
Change the programming method , Such as exception handling and circulation , Invalid in
Api Study , Platform differences
Return type qualification promise
Exception handling is complex
Rx Reactive expansion
The design idea of observable flow , Elegant and convenient
The learning curve
Api
Behavior is hard to estimate
coroutines
studies of the Book of Changes 、 Easy to use
jetpack,kotlin,aac,scope/vvm
Learning cost
边栏推荐
- Go language to realize static server
- 网上炒股开户安不安全?谁给回答一下
- Dart: about Libraries
- (construction notes) learn the specific technology of how to design reusable software entities from three levels: class, API and framework
- OpenGL 绘制彩色的三角形
- MySQL time zone solution
- Shutter widget: centerslice attribute
- Dart: About zone
- Summary of development issues
- [official MySQL document] deadlock
猜你喜欢
QT OpenGL texture map
OpenGL 绘制彩色的三角形
PHP導出word方法(一mht)
Vulnhub narak
Flutter 退出登录二次确认怎么做才更优雅?
Why can't my MySQL container start
Php Export word method (One MHT)
Solution to the second weekly test of ACM intensive training of Hunan Institute of technology in 2022
[MySQL special] read lock and write lock
Swagger
随机推荐
Dart: about grpc (I)
Go language to realize static server
20. Valid brackets
PHP export word method (one MHT)
Experience container in libvirt
Differences between MySQL Union and union all
232. Implement queue with stack
Shardingsphere sub database and sub table < 3 >
OpenGL shader use
Flutter Widget : KeyedSubtree
225. Implement stack with queue
(构造笔记)GRASP学习心得
Vulnhub narak
OPenGL 基本知识(根据自己理解整理)
347. Top k high frequency elements
Apprendre à concevoir des entités logicielles réutilisables à partir de la classe, de l'API et du cadre
Master and backup role election strategy in kept
DEJA_ Vu3d - cesium feature set 053 underground mode effect
vulnhub之tomato(西红柿)
Pragma pack syntax and usage