Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengemas kini UI JavaFX dengan Selamat daripada Benang Pangkalan Data Latar Belakang?

Bagaimana untuk Mengemas kini UI JavaFX dengan Selamat daripada Benang Pangkalan Data Latar Belakang?

Barbara Streisand
Barbara Streisandasal
2024-12-26 19:29:09782semak imbas

How to Safely Update JavaFX UI from Background Database Threads?

Menggunakan Thread untuk Membuat Permintaan Pangkalan Data dengan JavaFX

JavaFX menetapkan dua peraturan asas berkenaan thread:

  1. Mana-mana interaksi dengan keadaan nod graf pemandangan hendaklah dilaksanakan pada aplikasi JavaFX benang.
  2. Operasi yang panjang harus dilaksanakan pada urutan latar belakang.

Pengecualian Ditemui

Pengecualian yang anda temui berasal daripada percubaan untuk mengemas kini UI (courseCodeLbl.setText(...)) daripada urutan selain daripada aplikasi JavaFX thread.

Melaksanakan Threading Dengan Betul

Untuk memastikan permintaan pangkalan data dilaksanakan dalam thread berasingan, ikuti langkah berikut:

  • Buat Runnable kelas dan laksanakan kaedah run() yang mengandungi permintaan pangkalan data.
  • Luluskan tika kelas ini kepada pembina Thread dan mulakan thread.
  • Gunakan Platform.runLater(Runnable r) untuk mengemas kini UI dengan hasil pangkalan data.

Melaksanakan Threading Menggunakan JavaFX .concurrent

JavaFX menyediakan kelas Tugas yang direka khusus untuk mengurus urutan latar belakang dan mengemas kini UI.

  • Buat objek Tugas dan tentukan panggilan pangkalan data dalam kaedah panggilan().
  • Gunakan updateProgress(...) dan updateMessage(...) untuk mengemas kini UI semasa pelaksanaan.
  • Daftar pengendali setOnSucceeded(...) dan setOnFailed(...) untuk memproses keputusan dan mengendalikan ralat.
  • Gunakan tugas menggunakan Task.Executor (cth., Executors.newCachedThreadPool).

Contoh Pelaksanaan

Task<Course> courseTask = new Task<Course>() {
    @Override
    public Course call() throws Exception {
        return myDAO.getCourseByCode(courseCode);
    }
};
courseTask.setOnSucceeded(e -> {
    Course course = courseTask.getCourse();
    if (course != null) {
        courseCodeLbl.setText(course.getName());
    }
});
exec.execute(courseTask);

Dalam contoh ini, akses pangkalan data dilakukan dalam tugasan dan kemas kini UI dijadualkan pada utas aplikasi JavaFX menggunakan pengendali setOnSucceeded. Dengan mengikuti garis panduan ini, anda boleh menggunakan urutan dengan berkesan untuk mengoptimumkan permintaan pangkalan data sambil mengekalkan responsif UI dalam aplikasi JavaFX.

Atas ialah kandungan terperinci Bagaimana untuk Mengemas kini UI JavaFX dengan Selamat daripada Benang Pangkalan Data Latar Belakang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn