Melaksanakan operasi berat seperti permintaan pangkalan data dalam utas utama boleh membekukan GUI. Multithreading membolehkan anda melakukan operasi sedemikian secara tidak segerak. Mari terokai cara menggunakannya dalam JavaFX dengan kelas Thread dan Runnable.
Dalam kod anda, anda menghadapi IllegalStateException semasa cuba mengemas kini UI courseCodeLbl elemen daripada benang latar belakang yang dibuat menggunakan Benang. Ini melanggar peraturan JavaFX utama: pengubahsuaian pada nod dalam graf pemandangan mesti dibuat pada urutan aplikasi JavaFX.
1. Menggunakan Kelas Thread dan Runnable:
Anda boleh melaksanakan tugasan dalam urutan berasingan dengan melaksanakan antara muka Runnable. Kaedah jalankan objek Runnable mengandungi kod yang akan dilaksanakan.
Thread t = new Thread(new Runnable() { @Override public void run() { // Perform database request here } });
2. Menggunakan Kaedah Berbeza dalam larian:
Anda boleh menggunakan kaedah berbeza dalam kaedah larian dengan mencipta instance kelas dan memanggil kaedahnya.
MyClass myClass = new MyClass(); Thread t = new Thread(new Runnable() { @Override public void run() { myClass.method1(); myClass.method2(); } });
JavaFX menyediakan API javafx.concurrent untuk multithreading yang direka khusus untuk bekerja dengan aplikasi UI. Ia menawarkan:
- Kelas Tugasan:
Mewakili tugas latar belakang sekali guna yang boleh mengembalikan hasil atau membuang pengecualian.
- Panggilan balik:
Kaedah mudah seperti setOnSucceeded dan setOnFailed yang secara automatik memanggil pengendali pada Aplikasi FX Thread.
Menggunakan JavaFX Concurrency 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);
Dengan memanfaatkan threading, anda boleh melaksanakan permintaan pangkalan data secara tidak segerak, mengekalkan UI JavaFX responsif. Ingat untuk mematuhi peraturan JavaFX untuk mengelakkan pengecualian dan memastikan operasi lancar.
Atas ialah kandungan terperinci Bagaimanakah Java Multithreading Boleh Meningkatkan Prestasi Permintaan Pangkalan Data dan Mencegah UI Membeku dalam Aplikasi JavaFX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!