1

コードベースで次のコードに出くわしましたが、それがどのように機能するのか理解できません.私はSwingの初心者なので、ばかげた質問のように思えたら申し訳ありません.

public static void invokeOnEventDispatchThread(Runnable r){
try{
  if(SwingUtilities.isEventDispatchThread()){
    r.run();
  }else{
    SwingUtilities.invokeAndWait(r);
  }
}catch(Exception e){
  ;
}

}

ここで r.run() はイベント ディスパッチ スレッドですぐに呼び出されますか? メソッドのポイントは r.run() をできるだけ早く呼び出して、キューの先頭に移動することですか?

ありがとう。

4

1 に答える 1

1

このメソッドのポイントは、コードを同期的に実行することです。

  • すでにEDTで実行していて、コードを実行するだけです。
  • または、そうではなく、ランナブルがEDTによって実行されるまでメソッドは待機します

特に、invokeAndWaitのjavadocには、EDTでメソッドを呼び出さないようにする必要があるため、コード内に2つのブランチがあると記載されています。

于 2012-12-07T08:12:28.377 に答える