Rumah >pangkalan data >tutorial mysql >Bagaimana Mengendalikan Threading dengan Betul dalam Aplikasi JavaFX?
Memahami Threading dalam JavaFX
JavaFX mengenakan dua peraturan penting untuk threading:
Peraturan 1 (GUI Threading ):
Sebarang interaksi dengan nod dalam graf pemandangan JavaFX mesti berlaku pada utas aplikasi JavaFX. Urutan ini bertanggungjawab untuk kedua-dua pemaparan dan pengendalian acara pengguna.
Peraturan 2 (Belitan Latar Belakang):
Operasi yang berjalan lama harus dilaksanakan pada urutan latar belakang untuk mengelakkan UI tidak bertindak balas.
Threading dengan javafx.concurrent API
JavaFX menyediakan kelas Task untuk mengurus operasi latar belakang. Tasks mempunyai kaedah call() yang dilaksanakan pada urutan yang berasingan. Setelah selesai, tugasan boleh mengemas kini elemen UI menggunakan pengendali acara berjaya() dan gagal() mereka. Pengendali ini digunakan pada FX Application Thread, memastikan pematuhan dengan Peraturan 1.
Contoh: Akses Pangkalan Data dengan Threading
Mari kita ambil contoh pertanyaan pangkalan data anda dan laksanakan ia menggunakan benang.
Objek Akses Data (DAO) Kelas:
public class CourseDAO { private Connection conn; public CourseDAO() throws Exception { // Establish database connection } public Course getCourseByCode(int code) throws SQLException { try (PreparedStatement stmt = conn.prepareStatement("SELECT * FROM course WHERE c_code = ?")) { stmt.setInt(1, code); ResultSet rs = stmt.executeQuery(); if (rs.next()) { // Create and populate a Course object } else { // Handle case where course doesn't exist } } } }
Kelas Pengawal:
@FXML private TextField courseId; @FXML private Label courseCodeLbl; private CourseDAO courseDAO; @FXML public void getCourseOnClick() { final int courseCode = Integer.valueOf(courseId.getText()); Task<Course> courseTask = new Task<>() { @Override protected Course call() throws Exception { return courseDAO.getCourseByCode(courseCode); } }; courseTask.setOnSucceeded(e -> { Course course = courseTask.getValue(); if (course != null) { courseCodeLbl.setText(course.getName()); } }); // Execute the task on a background thread exec.execute(courseTask); }
Dalam contoh ini, pertanyaan pangkalan data dijalankan pada urutan berasingan, mematuhi Peraturan 2. Selepas selesai, UI dikemas kini pada Benang Aplikasi FX, mematuhi Peraturan 1.
Atas ialah kandungan terperinci Bagaimana Mengendalikan Threading dengan Betul dalam Aplikasi JavaFX?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!