gpt4 book ai didi

android - 线程和处理程序的区别

转载 作者:IT老高 更新时间:2023-10-28 23:08:56 31 4
gpt4 key购买 nike

谁能告诉我 Thread 和 Handler 之间的区别?什么时候用Thread,什么时候用Handler?

我的项目中有两个代码,但我看不懂。

final Handler handler =  new Handler()
{
@Override
public void handleMessage(Message msg)
{
// Do SomeThings
}
};

还有

private class readThread extends Thread
{
Handler mHandler;

readThread(Handler h){
mHandler = h;
this.setPriority(Thread.MIN_PRIORITY);

}

@Override
public void run()
{
// Do SomeThings
}
}

并在另一个方法中像这样调用处理程序

read_thread = new readThread(handler);
read_thread.start();

谁先跑??谁能解释一下?

最佳答案

同理:你们都可以在不阻塞当前代码的情况下异步执行任务,

区别:假设你有一个 Runnable r = new Runnable{...}

  • 当你使用new Thread(r).start()时,实际上是创建了一个新线程并异步运行任务。

  • 当您使用 new Handler().post(r)(或 Message)时,您将 Runnable 对象添加到Looper 并稍后在同一线程中执行代码。

一个Thread,一般MainThreadUIThread包含一个Looper。当MainThread运行时,会循环Looper,并一一执行Runnable

首选线程时:

当您执行繁重的工作(如网络通信或解码大型位图文件)时,首选新线程。如果需要很多线程,也许 ExecutorService 是首选。 https://developer.android.com/reference/java/util/concurrent/ExecutorService.html

首选 Handler 时:

当您想从其他线程更新 UI 对象(如 TextView 文本)时,UI 对象必须只能在 UI 线程中更新。此外,当您只想稍后运行一些轻量级代码时(例如延迟 300 毫秒),您可以使用 Handler 因为它更轻更快。

另请参阅Handler vs AsyncTask vs Thread

关于android - 线程和处理程序的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31761351/

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