gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:16:26 24 4
gpt4 key购买 nike

这应该很快...

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com