我正在尝试在后台线程上运行所有服务请求。为此,我创建一个ExecutorService
并将对主处理程序(handleMessage
)的所有调用重定向到新线程(handleMessageHelper
)上的处理程序:
ExecutorService background = Executors.newSingleThreadExecutor();
//handles messages from client
class IncomingHandler extends Handler {
@Override
public void handleMessage(final Message msg) {
background.execute(new Runnable() {
@Override
public void run() {
handleMessageHelper(msg); //actually handles the request
}
});
super.handleMessage(msg);
}
}
但是,在创建新msg
和调用Runnable
函数之间,run()
以某种方式被破坏。有什么方法可以防止这种情况吗?