当前位置:网站首页>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
边栏推荐
- PowerShell:在代理服务器后面使用 PowerShell
- Video display and hiding of imitation tudou.com
- Data guard -- theoretical explanation (III)
- Interesting practice of robot programming 15- autoavoidobstacles
- Tucson will lose more than $400million in the next year
- Android advanced interview question record in 2022
- STM32 series - serial port UART software pin internal pull-up or external resistance pull-up - cause problem search
- . Net starts again happy 20th birthday
- [Digital IC hand tearing code] Verilog edge detection circuit (rising edge, falling edge, double edge) | topic | principle | design | simulation
- The most powerful new household god card of Bank of communications. Apply to earn 2100 yuan. Hurry up if you haven't applied!
猜你喜欢

Incremental backup? db full

如何搭建一支搞垮公司的技術團隊?

Missile interception -- UPC winter vacation training match

Five ways to query MySQL field comments!

Open source SPL optimized report application coping endlessly

Write a thread pool by hand, and take you to learn the implementation principle of ThreadPoolExecutor thread pool

The MySQL team development specifications used by various factories are too detailed. It is recommended to collect them!

【附源码】基于知识图谱的智能推荐系统-Sylvie小兔

PowerShell: use PowerShell behind the proxy server

Android advanced interview question record in 2022
随机推荐
Vulnstack3
Lsblk command - check the disk of the system. I don't often use this command, but it's still very easy to use. Onion duck, like, collect, pay attention, wait for your arrival!
Advanced learning of MySQL -- Application -- Introduction
Tla+ through examples (XI) -- propositional logic and examples
Talk about the things that must be paid attention to when interviewing programmers
[机缘参悟-38]:鬼谷子-第五飞箝篇 - 警示之一:有一种杀称为“捧杀”
Binary tree traversal - middle order traversal (golang)
STL container
A tab Sina navigation bar
Start the remedial work. Print the contents of the array using the pointer
Win: use PowerShell to check the strength of wireless signal
Marubeni Baidu applet detailed configuration tutorial, approved.
The MySQL team development specifications used by various factories are too detailed. It is recommended to collect them!
PowerShell:在代理服务器后面使用 PowerShell
Talk about the things that must be paid attention to when interviewing programmers
Variables in postman
Some query constructors in laravel (2)
Official announcement! The third cloud native programming challenge is officially launched!
Mysql database | build master-slave instances of mysql-8.0 or above based on docker
Li Kou Jianzhi offer -- binary tree chapter