メイン スレッドでデータベース リクエストのような負荷の高い操作を実行すると、GUI がフリーズする可能性があります。マルチスレッドを使用すると、このような操作を非同期で実行できます。 JavaFX で Thread クラスと Runnable クラスを使用してこれを使用する方法を見てみましょう。
コード内で、courseCodeLbl UI を更新しようとすると IllegalStateException が発生します。 Thread を使用して作成されたバックグラウンド スレッドの要素。これは重要な JavaFX ルールに違反しています。シーン グラフ内のノードへの変更は JavaFX アプリケーション スレッドで行う必要があります。
1.スレッドおよび Runnable クラスの使用:
Runnable インターフェイスを実装すると、別のスレッドでタスクを実行できます。 Runnable オブジェクトの run メソッドには、実行されるコードが含まれています。
Thread t = new Thread(new Runnable() { @Override public void run() { // Perform database request here } });
2. run でのさまざまなメソッドの呼び出し:
クラスのインスタンスを作成し、そのメソッドを呼び出すことで、run メソッドでさまざまなメソッドを呼び出すことができます。
MyClass myClass = new MyClass(); Thread t = new Thread(new Runnable() { @Override public void run() { myClass.method1(); myClass.method2(); } });
JavaFX は、UI アプリケーションを操作するために特別に設計されたマルチスレッド用の javafx.concurrent API を提供します。
- タスク クラス:
結果を返すか例外をスローできる 1 回限りのバックグラウンド タスクを表します。
- コールバック:
setOnSucceeded や setOnFailed などの便利なメソッドは、 FX アプリケーション スレッド。
JavaFX 同時実行 API の使用:
Task<Course> task = new Task<>() { @Override public Course call() { return myDAO.getCourseByCode(courseId); } }; task.setOnSucceeded(e -> { Course course = task.getValue(); courseCodeLbl.setText(course.getName()); }); exec.execute(task);
スレッドを利用すると、データベースリクエストを非同期に実行でき、JavaFX UI の応答性を維持できます。例外を回避し、スムーズな操作を確保するには、必ず JavaFX ルールに従うようにしてください。
以上がJava マルチスレッドによってデータベース リクエストのパフォーマンスが向上し、JavaFX アプリケーションでの UI フリーズを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。