首頁  >  文章  >  Java  >  為什麼我的 Java 應用程式在使用 OSXAdapter 進行檔案刪除後會延遲或崩潰?

為什麼我的 Java 應用程式在使用 OSXAdapter 進行檔案刪除後會延遲或崩潰?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-11-26 20:14:10660瀏覽

Why Does My Java App Lag or Crash After Using OSXAdapter for File Drops?

使用OSXAdapter 的JAR Bundler 導致應用程式滯後或終止

在所描述的場景中,Java 應用程式在合併OSXAdapter 庫來處理檔案後遇到效能問題和異常行為在macOS 上放置事件。這個問題可能源自於在執行耗時任務時阻塞事件調度執行緒 (EDT)。

要解決此問題,應修改應用程式以在單獨的執行緒上執行這些任務,同時更新 EDT 上的模型。 SwingWorker 及其 process() 方法為此提供了合適的機制。或者,可以按照提供的程式碼中的範例使用 invokeLater()。

不正確的執行緒

  1. 不正確的方法:

    • Controller 類別休眠(阻止 EDT)10
  2. 推薦方法:

    • 在單獨的執行緒中執行耗時的任務並更新GUI 上使用SwingWorker 進行EDT或invokeLater().

SwingWorker 實作範例

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() {
        // ....
    }
}

其他注意事項

  • 其他注意事項
  • 其他注意事項
確保在控制器中呼叫以檢查EDT 是否正在執行被阻止。 請參閱提供的 GitHub 項目,以了解 MVC 架構和不使用 JAR Bundler 建立 Mac OS 應用程式套件。 探索範例中介紹的 JTable 自動滾動技術。 按照提供的連結中建議的方式研究替代方法。

以上是為什麼我的 Java 應用程式在使用 OSXAdapter 進行檔案刪除後會延遲或崩潰?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn