0
让我在提问之前发布一些代码。Java:等待线程结果而不阻塞UI?
public Object returnSomeResult() {
Object o = new Object();
Thread thread = new Thread(this);
thread.start();
return o;
}
public void run() {
// Modify o.
}
所以,从UI线程调用方法returnSomeResult
;它启动另一个线程。现在,我需要等到线程完成计算。而且,与此同时,我不想阻止UI线程。如果我更改代码如下所示; UI线程被阻塞。
public Object returnSomeResult() {
Object o = new Object();
Thread thread = new Thread(this);
thread.start();
try {
synchronized(this) {
wait();
}
catch(Exception e) {
}
return o;
}
public void run() {
// Modify o.
try {
synchronized(this) {
notify();
}
catch(Exception e) {
}
}
我相信,因为我使用synchronized(this)
,它导致UI线程被阻塞。我如何在不阻止UI线程的情况下如此呢?
封闭的自定义代码和等待是同义的。你不能吃你的蛋糕,也不能吃。 – SLaks 2012-02-14 01:48:49