Dalam senario yang diterangkan, aplikasi Java mengalami masalah prestasi dan tingkah laku yang tidak normal selepas menggabungkan perpustakaan OSXAdapter untuk mengendalikan fail lepaskan acara pada macOS. Masalahnya berkemungkinan berpunca daripada menyekat utas penghantaran acara (EDT) semasa melaksanakan tugas yang memakan masa.
Untuk menyelesaikannya, aplikasi harus diubah suai untuk melaksanakan tugas ini pada utas berasingan sambil mengemas kini model pada EDT . SwingWorker, dengan kaedah process()nya, menawarkan mekanisme yang sesuai untuk ini. Sebagai alternatif, invokeLater() boleh digunakan seperti yang dicontohkan dalam kod yang disediakan.
Pendekatan Salah:
Pendekatan Disyorkan:
public class Controller extends SwingWorker{ public Controller() { execute(); // Starts the SwingWorker thread } @Override // Perform the time-consuming tasks (i.e., adding rows to the table) in a background thread. protected Void doInBackground() { // .... return null; } @Override // Update the GUI on the EDT after the background task is complete. protected void done() { // .... } }
Atas ialah kandungan terperinci Mengapa Apl Java Saya Lag atau Ranap Selepas Menggunakan OSXAdapter untuk Fail Terjatuh?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!