我正在Android上开发,但问题可能在任何其他Java平台上都同样有效.
我开发了一个多线程应用程序.假设我有一个需要执行时间密集型任务的第一类,因此这项工作在另一个Thread中完成.完成后,相同的Thread会将时间密集型任务结果返回给另一个(第3个)类.
最后一个类将执行某些操作并将其结果返回到第一个启动类.我注意到虽然第一堂课将一直等待,也许是因为这是某种循环?
另外我想让Thread-class停止运行,就像它将结果传递给第三类时它应该停止一样.第三类必须在没有被"封装"在第二类(线程一)的情况下完成它的工作.谁知道怎么做到这一点?
现在的经验是,第一个似乎在等待(悬挂)直到第二个和第三个完成:(
我看到了这个问题:如何在完成另一个线程后运行一个线程 ,但是它的答案对我来说不合适.
我有这样的Android代码:
public void startTask(Runnable r)
{
running = true;
Log.i(tag, "-----------start.Runnable-----------");
Thread first = new Thread(r);
first.start();
Thread second = new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
running = false;
}
});
}
Run Code Online (Sandbox Code Playgroud)
首先Thread将Runnable一些硬操作作为param 对象,我在后台服务中处理.所以,当我调用method:startTask()时我设置running = true; 防止双重执行任务.但是,我也需要在完成第一个线程后第二个线程设置running = false; 使其他操作能够执行.
如何等待第一个线程的完整性,不要冻结主线程?谢谢!