Kotlin中的并发和协程

Java虚拟机(简称JVM)支持多线程。 您在其上运行的任何进程都可以自由创建合理数量的线程以异步执行多个任务。 但是,编写能够以最佳且无错误的方式实现的代码非常困难。 多年来,Java,其他JVM语言以及许多第三方库都试图提出新颖而优雅的方法来解决此问题。

例如,Java 5引入了执行程序框架,该框架使您可以将线程管理详细信息与业务逻辑分离。 Java 8提供了并行流,可以轻松地与lambda表达式一起使用。 RxJava为Java带来了反应性扩展,使您可以编写非常简洁易读的异步代码。

Kotlin支持几乎所有这些方法,并提供一些自己的方法。 在本教程中,我将向您展示如何在Android应用程序中使用它们。

先决条件

要遵循本教程,您需要:

1.创建线程

通常,实现Runnable接口的类的实例用于在Kotlin中创建线程。 因为Runnable接口只有一个方法run()方法,所以您可以利用Kotlin的SAM转换功能以最少的样板代码创建新线程。

这是如何使用thread()函数(它是Kotlin标准库的一部分)来快速创建和启动新线程的方法:

thread {
    // some long running operation
}

仅当您需要偶尔产生一两个线程时,以上方法才适用。 如果并发是应用程序业务逻辑的重要组成部分,并且您需要大量线程,那么将线程池与执行程序服务一起使用是一个更好的主意。

例如,以下代码使用Executors类的newFixedThreadPool()方法创建一个包含八个可重用线程的线程池,并在其上运行大量后台操作:

val myService:ExecutorService = Executors.newFixedThreadPool(8)
var i = 0

while (i < items.size) {  // items may be a large array
    val item = items[i]
    myService.submit {
        processItem(item) // a long running operation
    }

   
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值