采纳答案成功!
向帮助你的同学说点啥吧!感谢那些助人为乐的人
在runblocking内部调用launch方法的时候不会导致runblocking的协程体挂起么。
BlockingCoroutine 里面的 joinBlocking日志的打印次数不是很理解,它不是一个while死循环么,如果是resume恢复的时候调用了dispatch然后offer进来循环一次打了日志,那这个resume的调用时机是哪里,job.join不是只是增加了一个回调并且等待launcher里面执行完么,那不是不会立马执行这个resume,为啥会触发 joinBlocking的打印日志,后面的delay也是这样,为啥一调用delay就打印了,delay不是也没有这么快resume.
同学可能对里面的blockingqueue需要多关注一下,每当外部有offer调用的时候,死循环那里就会在take的地方返回,返回的就是协程恢复之后要执行的逻辑。同学试试把日志放到take之后,看看会有什么不一样。
那offer的调用时机不是应该在resume的时候才会调用么,job.join还有deley不是要等结束才会触发resume,但是我看日志里的这个时间,发现一调用到job.join还有deley就打了这个joinBlocking日志。
登录后可查看更多问答,登录/注册
如果有一门语言可以取代Java,那么它一定是Kotlin。
1.5k 4
1.5k 1
365 1
141 20
1.3k 16