【发布时间】:2020-12-31 20:17:32
【问题描述】:
我今天接受了采访。有人问我为什么 Kotlin 更好,我提到了 ,使用 Kotlin 我们有协程,这使得执行繁重的操作变得更容易和更好,但是使用 Threads(Java),如果同时创建和运行许多线程它可能会导致内存不足的问题。 他回答说,Java 中的线程也可以这样做。 我是一名初级开发人员,我最近切换到了 kotlin,所以我对此的了解有限,我在互联网上找不到更多相同的信息。有人可以帮忙吗?
【问题讨论】:
-
协程使用挂起函数的思想,在JVM上使用状态机。它不直接绑定到线程(协程中的调度程序)。没有办法消除“繁重”操作 - 无论如何都会发生线程阻塞。 Kotlin 将协程宣传为内联使用回调的绝妙方式,并且不直接将其与线程绑定 - 但在 99.9% 的用例中,回调通常是因为异步操作(如网络调用),无论如何您都将使用线程。面试官指的是线程池和执行器,就像协程使用的一样,即 Dispatchers.IO
-
您究竟想要什么“效率”?
-
协程的主要优势在于,您必须在 Java 中使用 lambda 面向函数的 API(回调)来执行此操作,而使用协程,您可以继续以常规的顺序编程风格进行操作。请注意,当 Project Loom 成为 Java 的一部分时,它将比 Kotlin 协程更简单。
标签: android multithreading kotlin kotlin-coroutines