我应该使用Handler类还是同步函数进行线程到线程的通信

时间:2011-08-10 18:52:38

标签: java android multithreading

我是Android的初学者,所以这就是:

我的游戏中有多个主题:主要活动,渲染器和游戏循环。

所以问题是: 我应该从Handler类派生类并将消息发送到线程还是应该使用同步函数进行线程到线程的通信?

这两种方法的优点和缺点是什么?

(我也不是Java专家,C ++是我的祖国)

3 个答案:

答案 0 :(得分:1)

Handler旨在简化线程。您应该尽可能使用它但是您只能在GUI事件调度程序管理的线程上使用处理程序。对于大多数游戏,主UI和OpenGL线程由事件调度程序管理,处理程序可以正常工作。

答案 1 :(得分:1)

两个提议的选项从根本上有所不同。使用Handlers,您将为拥有该处理程序的线程发布消息。也就是说,您可以向UI线程发布消息,以便以某种方式修改UI。使用synchronized方法,发送消息的线程将是执行执行的线程。 Android中的并发抽象非常好,所以我建议你尽可能使用它们而不是自己动手。

答案 2 :(得分:1)

当您需要将操作恢复到正在运行的活动时,处理程序很有用。

当涉及从UI到我的应用程序中的其他线程的通信时,我更喜欢使用线程安全的集合来管理从一个到另一个的通信。例如,当我开发游戏时,我通常会将UI线程报告触摸事件发送到我的游戏线程,方法是将它们插入到LinkedBlockingQueue中,游戏线程会在闲暇时将其清空。