【发布时间】:2015-01-21 23:33:25
【问题描述】:
我得到了一个带有 1 个线程的 FixedSizeThreadPool(因为我只需要一个,并且每个后续请求都应该等到之前的请求完成):
myService = Executors.newFixedThreadPool(1);
myService.execute(new WorkerRunnable());
在我的 WorkerRunnable 中我做了一些事情,在中间我从我的 Activity 中调用一个方法:
myActivity.thisMethodRunsOnUiThread();
方法如下:
public void thisMethodRunsOnUiThread() {
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
I'm trying to Change a View here, that's why i Need to do this on Ui Thread
}
});
}
然后在 WorkerRunnable 上出现了我的最后一个方法,它应该再次在来自 fixedSizePool 的单独线程上运行
myActivity.thisMethodsRunsonUiThread();
thisMethodRunsAgainOnTheSeperateThread();
但我这里提到的是,他只在 MethodWhichShouldRunOnSeperateThread 之后调用应该 RunOnUiThread 的方法。(这是最后一个方法,所以我的线程此时将完成)。难道是seperateThread比MainThread获得了更高的优先级,所以他等到seperateThread完成后再启动UiThread上运行的方法?
我需要完成方法
myActivity.thisMethodsRunsonUiThread();
在这个方法之前
thisMethodRunsAgainOnTheSeperateThread();
谁能解释他为什么会这样?任何帮助表示赞赏。
【问题讨论】:
标签: android threadpool