java - 在消息处理程序的根中启动一个新线程是否有意义

标签 java android multithreading handler

这应该很快...

我从别人那里接手了一个项目的开发,在我看来,他们不知道自己在做什么。我发现了许多不良代码实践和逻辑错误的例子,我相信这些例子会让你和我一样热血沸腾。我现在正在处理一个代码区域,其中他们出于某种未知的原因决定创建大量的消息处理程序。我认为他们不明白处理程序的用途...我有一个类,其中包含多达 4 个处理程序作为类字段,所有处理程序均由同一线程创建!其中一个处理程序如下所示:

private Handler messageHandler1 = new Handler() {
    public void handleMessage(final Message msg) {
        super.handleMessage(msg);

        new Thread() { // why are we starting a thread in the root of a message handler?!
            public void run() {
                super.run();

                    // some code...
            }
        }.start();
    }
};

除了无用的变量名之外,我更关心的是在处理程序的根部创建一个新线程。我对处理程序的理解是,它们用于允许您在另一个线程上运行代码,因此一个线程可以使用另一个线程的处理程序以便能够在另一个线程上运行代码...那么,如果您只是要立即创建一个新线程,那么首先使用处理程序肯定是完全没有意义的?!我只是希望有人在我删除此处理程序并以正确的方式(我认为是)这样做之前确认(或不)有更多智慧。

谢谢

最佳答案

Handler 始终指向Thread。 当处理程序收到消息时,最佳实践是处理程序在自己的线程上处理消息。这就是首先创建处理程序的全部要点。

Handler.handleMessage() 内部启动一个新线程充其量是一个奇怪的选择。

关于java - 在消息处理程序的根中启动一个新线程是否有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45413729/

相关文章:

android - 警告 :Conflict with dependency 'com.android.support:support-annotations'

java - 单线程池与每个任务一个线程池

python - 如何使用ThreadPoolExecutor递归遍历目录?

java - 内部类中访问的变量

java - 在 Java 中将 JSON 转换为 parquet

Java selenium - 在下拉菜单中选择元素

java - 仅添加奇数

java - 单击按钮时增加和减少自动滚动文本速度

android - 如何防止短信进入 Android Kitkat 中的收件箱

java - 如何利用 Java 多线程来获得最大速度和最小错误?