Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 我应该使用处理程序类还是同步函数进行线程到线程的通信_Java_Android_Multithreading - Fatal编程技术网

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

Java 我应该使用处理程序类还是同步函数进行线程到线程的通信,java,android,multithreading,Java,Android,Multithreading,我是安卓系统的初学者,所以有一件事: 我的游戏中有多个线程:主活动、渲染器和游戏循环 因此,问题是: 我应该从处理程序类派生类并向线程发送消息,还是应该使用同步函数进行线程到线程的通信 这两种方法的优缺点是什么 (我也不是爪哇的专家,C++是我的祖国) < P>处理器是为了简化线程而设计的。您应该尽可能使用它,但只能在GUI事件调度器管理的线程上使用处理程序。对于大多数游戏,主UI和OpenGL线程都由事件调度器管理,处理程序在它们上面工作得很好。这两个建议的选项根本不同。使用处理程序可以为拥有

我是安卓系统的初学者,所以有一件事:

我的游戏中有多个线程:主活动、渲染器和游戏循环

因此,问题是: 我应该从处理程序类派生类并向线程发送消息,还是应该使用同步函数进行线程到线程的通信

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


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

< P>处理器是为了简化线程而设计的。您应该尽可能使用它,但只能在GUI事件调度器管理的线程上使用处理程序。对于大多数游戏,主UI和OpenGL线程都由事件调度器管理,处理程序在它们上面工作得很好。

这两个建议的选项根本不同。使用
处理程序
可以为拥有该处理程序的线程发布消息。也就是说,您将向UI线程发布一条消息,以便它以某种方式修改UI。对于同步方法,发送消息的线程将是执行消息的线程。Android中的并发抽象非常好,因此我建议您尽可能使用它们,而不是自己使用。

当您需要将操作返回到正在运行的活动时,处理程序非常好

当涉及到从UI到我应用程序中其他线程的通信时,我更喜欢使用threadsafe Collections来管理从一个线程到另一个线程的通信。例如,当我开发一个游戏时,我通常会让UI线程通过将触摸事件插入LinkedBlockingQueue来向我的游戏线程报告触摸事件,游戏线程会在空闲时清空该队列