多段階プロセスを実行するコードをリファクタリングしています。各ステップは、ネストされたjava.awt.EventQueue.invokeLAter
.... 呼び出し内にあります。次のようになります。
import java.awt.EventQueue;
public class NestedInvokeLater {
/**
* @param args
*/
public static void main(String[] args) {
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
changeTabPanel();
copySomeFiles();
enableNextButton1();
upDateProgressBar(10);
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
readInFiles();
doSomethingToFiles();
upDateProgressBar(15);
java.awt.EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
doSomethingElse();
upDateProgressBar(100);
}
});
}
});
}
});
};
}
私は Java に慣れていないので、これらの呼び出しを入れ子にして EDT に「ジョブ」を追加する点がわかりません。また、これらの呼び出しをいじることに 100% 自信があるわけでもありません。私は、invokeLater呼び出しが何をするのか、そして各ステップが何をするのかを理解していると思います。この理解が間違っている場合は修正してください。
invokeLaterは、イベント ディスパッチ スレッドで実行されるジョブのリストに呼び出しを追加するために使用されます。次に Java は、各呼び出しがいつ/どのように行われるかを処理し、EDT と GUI が「バックグラウンドで」ジョブを実行する際にロックしないようにします。
これらの呼び出しをネストすると、一連のジョブをキューに入れる必要があることがわかります。そのうちの 1 つは何かをキューに入れることであり、それはいくつかのジョブをキューに入れます....そのうちの 1 つは何かをキューに入れることです。ただし、最初の内部呼び出しは、前のジョブが完了した後にのみキューに入れられます。すべてが順番に発生します (これはプロセス全体の私の理解に沿っています) が、ネストされたリクエストを使用してジョブをキューに入れる理由がわかりません。これを最初から書いていたら、呼び出しごとに単純に関数を作成し、それらを順番に呼び出していたでしょう。
私はJavaの初心者にすぎないことを認識しています。おそらく、このネストを重要にする大きな何かが欠けているでしょう。しかし、これに関するドキュメントはなく、ネストに関するコードのコメントもありません。
私は何が欠けていますか?このコードの要点が何かあるとすれば、それは何ですか?