首页 > Java > java教程 > 正文

为什么我的 Java 应用程序在使用 OSXAdapter 进行文件删除后会出现延迟或崩溃?

Mary-Kate Olsen
发布: 2024-11-26 20:14:10
原创
656 人浏览过

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() {
        // ....
    }
}
登录后复制

其他注意事项

  • 确保 isDispatchThread() 方法是在控制器中调用以检查 EDT 是否正在执行被阻止。
  • 请参阅提供的 GitHub 项目,了解 MVC 架构和不使用 JAR Bundler 创建 Mac OS 应用程序包。
  • 探索示例中介绍的 JTable 自动滚动技术。
  • 按照提供的链接中的建议研究替代方法。

以上是为什么我的 Java 应用程序在使用 OSXAdapter 进行文件删除后会出现延迟或崩溃?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板