我有两个工作线程:
他们将是单身,以便应用的每个部分都可以使用它们。
public class DbThread extends Thread { public Handler handler; @Override public void run() { Looper.prepare(); handler = new Handler(); Looper.loop(); } }
他们通过处理程序进行通信。我关心的是同步。另一个线程可以在创建它时尝试访问Handler以发送消息。如何正确同步Handler访问权限?
我的想法是,想要访问另一个线程的Handler的线程应该在Handler创建之前等待。但我不知道如何做到这一点。
答案 0 :(得分:2)
我在实施this解决方案方面取得了一些成功。
您将隐藏Loler在HandlerThread中,您可以等到线程准备好接收消息。
这是有效的,因为waitUntilReady
中的 getLooper 调用将阻塞,直到looper被初始化。这样做不仅可以确保已经创建了处理程序,而且还可以确保您的线程已准备好接收消息。