我有一个ans =
0
同时运行多个线程。在ThreadPoolExecuter
中,我想在另一个线程中运行方法,所以,我在execute方法中创建了另一个线程(线程A),现在我想得到线程A的结果在执行程序线程中运行。
让我用一个样本澄清:
Runnable
ThreadPoolExecuter threadPool = Executors.newFixedThreadPool(5);
threadPool.execute(new Runnable() {
@Override
public void run() {
// do something in threadPool thread
// call method in thread A
getInfo(new QueryExecutorInterface() {
@Override
public void onPostExecute(Cursor cursor) {
// do other thing in threadPool thread again.
}
});
}
});
是我想要传递给线程QueryExecutorInterface
并在A
线程上获得结果的界面。因为我已经调用了侦听器,就像跟随方法一样,我得到了线程ThreadPool
中的结果:
A
PS:我可以使用 class A extend Thread {
@Override
public void run() {
// do something in thread A.
queryExecutorInterface.onPostExecute(cursor);
}
}
类而不是使用线程ReentrantLock
来修复此方案。但是由于我还有另外一层,我不想使用锁定。
答案 0 :(得分:1)
您只需要将另一个Runnable添加到ThreadPool中。所以你必须让ThreadPool成为最终版本:
{{1}}