当前位置:网站首页>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
边栏推荐
猜你喜欢
Colleagues wrote a responsibility chain model, with countless bugs
Introduction to the implementation principle of rxjs observable filter operator
【mysql官方文档】死锁
Php Export word method (One MHT)
QT OpenGL texture map
Qt+vtk+occt reading iges/step model
Summary of development issues
Itext7 uses iexternalsignature container for signature and signature verification
[learning notes] DP status and transfer
MCDF Experiment 1
随机推荐
Summary of development issues
QT OpenGL rotate, pan, zoom
shardingSphere分库分表<3>
Unity3d learning notes 5 - create sub mesh
Use of QT OpenGL camera
OpenGL 着色器使用
023 ([template] minimum spanning tree) (minimum spanning tree)
Is BigDecimal safe to calculate the amount? Look at these five pits~~
OpenGL 索引缓存对象EBO和线宽模式
Dart: about Libraries
Master and backup role election strategy in kept
OpenGL shader use
ES6新特性
实现验证码验证
Laravel time zone timezone
257. All paths of binary tree
Dynamically monitor disk i/o with ZABBIX
Sheet1$. Output [excel source output] Error in column [xxx]. The returned column status is: "the text is truncated, or one or more characters have no matches in the target code page.".
Optimize interface performance
(构造笔记)从类、API、框架三个层面学习如何设计可复用软件实体的具体技术