【问题标题】:Async with single thread in Android在 Android 中与单线程异步
【发布时间】:2022-01-21 17:08:03
【问题描述】:

我在post Apost B 上阅读了一些关于同步、异步和线程的堆栈溢出答案。我从帖子中得到的主要观点是 “多线程只是一种异步。线程是关于工人的;异步是关于任务的” 来自帖子 A 和 “技术上,同步的概念/异步确实与线程没有任何关系”来自帖子 B

我相信这是编程界的普遍想法。所以我想知道的是“它在 android(java/kotlin) 中是真的吗?如果是这样,还有哪些其他方法可以在 java/kotlin 中实现异步任务单线程 ?”任何人都可以给我一个特定于android的例子吗? (或者也欢迎使用 java/kotlin)

【问题讨论】:

  • I believe this is general idea in programming world. so what I wonder about this is "is it true in android(java/kotlin)? 你说这是所有编程的一般思想,然后问Java或kotlin是否如此,这些不构成编程世界的一部分吗?
  • @a_local_nobody 如果你的意思是我的想法也适用于 java 或 kotlin,你能给我一个例子或任何可以很好地解释它的链接吗?

标签: java android multithreading kotlin


【解决方案1】:

我认为您正在寻找的是 async/await 的概念,可以在 C#JavaScript 等语言中找到。

Java 默认不支持这个,他们的任何流行/广泛使用的库也不支持它。您可以使用Futures 模拟它,就像这里Java Equivalent of C# async/await? 但它的草图。

Kotlin 具有模拟此功能的 suspend 函数修饰符。这是一个细分https://www.raywenderlich.com/books/kotlin-coroutines-by-tutorials/v2.0/chapters/5-async-await

【讨论】:

  • 基本上你的意思是“没有任何流行/广泛使用的库使用异步在 Java/Kotlin 中与单线程一起工作”,这意味着大多数异步在 Android(Java/Kotlin)中工作应该是涉及多线程(挂起也涉及后台线程)?
  • 是的,Kotlin 的 suspend 接近于 async/await 功能,因为它使用“状态机”。但与C#Javascript 不同,您不能在不阻塞主线程的情况下在主线程上运行它。 AFAIK。 IMO async/await 带单线程是解决阻塞问题的快速解决方案,但对于 Android 来说是一个有争议的问题。在Android 中,主线程已经按原样做了很多工作,让它做更多的工作不会带来更好的体验,它不会因为没有响应错误而崩溃。
猜你喜欢
  • 2013-08-31
  • 1970-01-01
  • 2021-12-14
  • 2010-12-22
  • 1970-01-01
  • 2012-07-13
  • 2013-02-15
  • 1970-01-01
相关资源
最近更新 更多