gpt4 book ai didi

java - Handler、Runnable 和 Threads 之间有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 21:06:19 26 4
gpt4 key购买 nike

Handler、Runnable、Threads有什么区别?

当我使用 android 时,我需要在后台运行一些东西。我使用线程来运行它。通常我会写一个扩展 Thread 的类并实现 run 方法。

我还看到了一些实现 runnable 并将 runnable 传递给 Threads 的示例。

但是我仍然很困惑。谁能给我一个明确的解释?

  1. 如果可以在 Thread 的 run 方法中编写后台代码,那么 Runnable 的意义何在?
  2. Handler在线程内部是如何使用的,为什么要使用它。
  3. Android 还有一个东西叫runOnUiThread,我们怎么用呢?我知道它是用来更新 UI 的。

最佳答案

为什么使用 Runnable over Thread?

  • Runnable 将需要异步运行的代码与 如何 运行代码分开。这使您的代码保持灵活。例如,runnable 中的异步代码可以在线程池或专用线程上运行。

    一个 Thread 有你的可运行可能不需要访问的状态。获得比必要更多的状态是糟糕的设计。

    线程占用大量内存。为每个小 Action 创建一个新线程需要处理时间来分配和释放此内存。

runOnUiThread 实际上在做什么?

  • Android 的 runOnUiThread排队 Runnable 以在 UI 线程上执行。这很重要,因为您永远不应该从多个线程更新 UI。 runOnUiThread 使用 Handler

    请注意,如果 UI 线程的队列已满,或者需要执行的项目很长,那么您的排队 Runnable 可能需要一段时间才能真正运行。

什么是处理程序?

  • 处理程序允许您发布可在特定线程上执行的可运行文件。在幕后,runOnUi Thread 将您的 Runnable 与 Android 的 Ui 处理程序一起排队,以便您的 runnable 可以在 UI 线程上安全地执行。

关于java - Handler、Runnable 和 Threads 之间有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21194762/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com