采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
老师,在看扔无线大佬视频的时候,他解释协程就是在切换线程。有一些地方不明白:
晚点儿再回复你的两个具体问题
你把他的视频忘了再来看吧,他的视频篇幅太少决定了他只能讲的太浅,这也是没办法的事儿。
不要纠结切不切线程的问题,先把协程的本质搞懂,剩下的就都通了。协程的本质就是开发者可以控制挂起和恢复,没有别的了,抓住这个概念再去琢磨我们可以利用协程干什么,最常见的就是把异步逻辑同步化。你看,这个过程跟线程的关系在哪儿呢?没有直接的关系。
是没有直接关系,的确,协程框架用起来是非常简单易用。内部的实现其实还是切换了线程,但并不是因此说它是就是一个线程框架。协程的目的是让开发者用同步方式写出异步的代码,也就如同kotlin的编码规范一样,在java中,我们无需关注null,泛型类型等问题,而在kt中,我们需要改变编码习惯,避免null指针等问题,回到协程上,协程的挂起与恢复交给了我们开发者去自由操作,也就是最前面说的同步代码,异步操作,从而可以避免回调地狱等问题,在这点上,它和线程没有什么关系,因为我们直接关注的是它的语法方面。我是这样理解的,不知道对不对
说的挺好的
我的理解是Coroutine把線程切換這一塊抽象了,本質上把各代碼塊用Suspend/Resume分段,內部實現用狀態機來處理。而分段的代碼再用Dispatcher去決定運行在哪個線程上,如果都設定在Main thread的話,就算有協程但沒有切換線程。 理解不知道對不,有錯請多指教
登录后可查看更多问答,登录/注册
如果有一门语言可以取代Java,那么它一定是Kotlin。
1.5k 4
1.6k 1
419 1
257 20
1.4k 16