使用Handler进行线程交互

时间:2012-12-29 20:38:53

标签: java android multithreading

我有两个工作线程:

  • DB线程
  • 网络线程

他们将是单身,以便应用的每个部分都可以使用它们。

public class DbThread extends Thread {

      public Handler handler;

      @Override
      public void run() {
          Looper.prepare();

          handler = new Handler();

          Looper.loop();
      }
  }

他们通过处理程序进行通信。我关心的是同步。另一个线程可以在创建它时尝试访问Handler以发送消息。如何正确同步Handler访问权限?

我的想法是,想要访问另一个线程的Handler的线程应该在Handler创建之前等待。但我不知道如何做到这一点。

1 个答案:

答案 0 :(得分:2)

我在实施this解决方案方面取得了一些成功。

您将隐藏Loler在HandlerThread中,您可以等到线程准备好接收消息。

这是有效的,因为waitUntilReady中的 getLooper 调用将阻塞,直到looper被初始化。这样做不仅可以确保已经创建了处理程序,而且还可以确保您的线程已准备好接收消息。