0
私は質問をする前にいくつかのコードを投稿させてください。Java:UIをブロックせずにスレッド結果を待つ?
public Object returnSomeResult() {
Object o = new Object();
Thread thread = new Thread(this);
thread.start();
return o;
}
public void run() {
// Modify o.
}
ので、方法returnSomeResult
は、UIスレッドから呼び出されます。別のスレッドを開始します。今、スレッドが計算を終了するまで待つ必要があります。そして、一方、私はUIスレッドをブロックしたくありません。コードを以下のように変更した場合。 UIスレッドはブロックされます。私はそれがUIスレッドをブロックさせる、synchronized(this)
を使用していますので、
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) {
}
}
は、私は確信しています。 UIスレッドをブロックせずに、どうすればいいですか?
は、ブロッキングと同義である待って、発信者に応じたカスタムコードのパラメータを追加することができますswingworker
を使用することができます。ケーキを食べて食べることはできません。 – SLaks