ホームページ > Java > &#&チュートリアル > Java マルチスレッドによってデータベース リクエストのパフォーマンスが向上し、JavaFX アプリケーションでの UI フリーズを防ぐにはどうすればよいですか?

Java マルチスレッドによってデータベース リクエストのパフォーマンスが向上し、JavaFX アプリケーションでの UI フリーズを防ぐにはどうすればよいですか?

DDD
リリース: 2024-12-30 06:31:09
オリジナル
311 人が閲覧しました

How Can Java Multithreading Improve Database Request Performance and Prevent UI Freezes in JavaFX Applications?

Java でのデータベース リクエストのマルチスレッド化について

メイン スレッドでデータベース リクエストのような負荷の高い操作を実行すると、GUI がフリーズする可能性があります。マルチスレッドを使用すると、このような操作を非同期で実行できます。 JavaFX で Thread クラスと Runnable クラスを使用してこれを使用する方法を見てみましょう。

問題: バックグラウンド スレッドから UI 要素を変更する

コード内で、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 Concurrency API:

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート