从 ExecutorService 更新 JProgressBar

2024-01-10

我正在使用 Java ICMP ping 功能对网关进行 ping 操作。为了执行快速 ping,我使用 ExectorService 创建用于 ping 的线程。地址被 ping(或不)后,我想在 ping 后更新 Jprogressbar。我有这段代码正在运行,但它会在作业(ping 线程)完成之前更新 Jprogressbar。我想在工作完成后更新 jprogressbar。

private int NUM_THREADS = Runtime.getRuntime().availableProcessors();
ExecutorService exec = Executors.newFixedThreadPool(NUM_THREADS);
public void run() {
    int JProgressBarValue = 0;
    for (;GateWayKey<=GateWayKeyStop;GateWayKey++){
        ip="192.168."+GateWayKey+".1";
       exec.submit((new PingTask(ip,GateWayKey,true,scanFrameRefrence,ttl)));
       JProgressBarValue=(GateWayKey/GateWayKeyStop)*100;
       scanFrameRefrence.progressBar.setValue(JProgressBarValue);
       scanFrameRefrence.progressBar.repaint();
    }}

首先,不能从事件分派线程外部使用 Swing 组件。因此,更新进度条的代码必须包含在里面

SwingUtilities.invokeLater(new Runnable() {
    @Override
    public void run() {
        scanFrameRefrence.progressBar.setValue(value);
    }
});

现在,回答问题。如果您想在任务完成时更新进度条,更简单的方法是让任务本身在执行结束时更新进度条。

另一种方法是使用执行者完成服务 http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/ExecutorCompletionService.html,当每个任务完成时可以收到通知(感谢阻塞队列)。

另外,请考虑发布实际的编译代码并遵守 Java 命名约定:变量以小写字母开头。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 ExecutorService 更新 JProgressBar 的相关文章

随机推荐

  • gstreamer playbin - 在 Windows 上设置 uri

    我正在尝试使用此站点上的 CLI 示例播放一些音频文件 http pygstdocs berlios de pygst tutorial playbin html http pygstdocs berlios de pygst tutori
  • C代码中的QA C警告消息[重复]

    这个问题在这里已经有答案了 我编写了以下一段代码并通过 QA C 进行了分析 但它显示了警告 x 具有外部链接 并且正在定义而没有任何先前的声明 请帮助我理解这一点 Code include
  • 使用 cURL 命令时出现 URL 问题

    我在使用curl 来使用网络服务时遇到了问题 如果我们使用 Postman 消费 有一个 URL 可以正常工作 但如果通过 cURL 消费 则失败 Postman 中的 URL 工作正常 https localhost WebService
  • R 将矩阵的行乘以向量的行的最快方法

    我想将矩阵的行乘以向量的每一行 元素 而不是整个向量 正如已经发布的另一个问题所讨论的那样 例如 我想使用这两个矩阵 或者 oo 是一个向量 因为它是一列 oo matrix 1 3 3 1 oop matrix 1 9 3 3 byrow
  • 如何检查滚动条是否可见?

    是否可以检查overflow auto一个 div 的 例如 HTML div style width 100px height 100px class my class content div JQUERY my class live h
  • bash 使用正则表达式查找不区分大小写

    我需要查找以三个小写字母开头的文件 但由于某种原因 我遇到了不希望的不区分大小写的行为 我将 find 与 regex 选项一起使用 但它甚至找到以大写字母开头的文件 find regextype posix egrep regex a z
  • JSON 与 XML 的性能注意事项

    我正在使用一个 Web 服务 它提供 XML 或 JSON 格式的大型结果集 哪种格式会更快或更好 基于性能 另外我应该使用哪种语言来解析 XML JSON 我应该使用 PHP 还是 JavaScript PHP 或 JavaScript
  • Android - Facebook 共享内容被覆盖

    这是我在 Facebook 上分享高分的代码 ShareLinkContent content new ShareLinkContent Builder setImageUrl Uri parse http www example com
  • 获取 Today-Extension 内通知中心的宽度

    我目前正在尝试将 CollectionView 放入 Today 扩展中 但有件事让我烦恼 我希望实现每个单元格都适合我的集合视图的一行 因此 根据项目数计算单元格宽度 在 iPhone 上一切正常 但在 iPad 上却看起来不太正常 单元
  • 将 Azure 诊断日志写入 Blob 存储的性能影响

    我们在 Azure 上运行的 C Web 应用程序使用 System Diagnostics Trace 编写跟踪语句以进行调试 故障排除 一旦我们为这些日志启用 blob 存储 使用 Azure 门户中的 应用程序日志记录 blob 选项
  • 将 Serilog 与 Azure 日志流结合使用

    我一直在研究如何使用 Serilog 写入 Azure 日志流 我也在这里找到了一些答案 例如 一个答案是建议登录到特定文件夹中的文件 home LogFiles http 但它似乎对我不起作用 我尝试使用Trace https githu
  • 添加 Material Design 时,布局预览不显示布局

    我正在开发一个 Android 应用程序 一切看起来都很完美 直到我决定使用材料设计在我的主题中 添加后材料设计主题 布局预览不显示预览 但在手机上构建时效果良好 当删除 xml 中使用的材料设计组件时 一切都完美运行 附上我的代码 活动主
  • 列出文件中的 unicode 单词

    我的代码是 f codecs open r C Users Admin Desktop nepali txt r UTF 8 nepali f read split for i in nepali print i 显示文件中的单词 但是当我
  • 如何修复:致命错误:openssl/opensslv.h:RedHat 7 中没有这样的文件或目录

    我有 RedHat Enterprise Linux Server 7 并且下载了 linux 内核版本 4 12 10 我正在尝试编译它 但是当我执行以下命令时 make modules 我收到以下错误 scripts sign file
  • 使用默认过滤器值加载数据表

    尝试使用数据表中的输入框构建自定义搜索 请找到小提琴版本 http jsfiddle net c6cu705n http jsfiddle net c6cu705n 我试图仅加载表中的 San Francisco 值 而不加载其他值 尝试了
  • 如何使 ProgressDialog 可以通过后退按钮取消,但不能通过屏幕点击取消?

    我想做一个ProgressDialog可以通过后退按钮取消 但不能通过屏幕点击取消 目前我使用setCancelable true 然而 在一些较新的设备中 点击屏幕也会取消ProgressDialog 我想禁用屏幕点击操作Progress
  • iOS UITextField 在文本更改时更改位置

    我用它来将文本字段置于相关内容的中心 textField setCenter someObject center textField becomeFirstResponder 这看起来很棒 很漂亮 并且位于对象的中心 可以接受文本 我希望文
  • Python smtplib 代理支持

    我想通过代理发送电子邮件 我目前的实现如下 我通过身份验证连接到 smtp 服务器 成功登录后 我会发送一封电子邮件 它工作正常 但当我查看电子邮件标题时 我可以看到我的主机名 我想通过代理来传输它 任何帮助将不胜感激 Use Socksi
  • OracleConnection 生命周期 - 最佳实践

    我正在使用标准 Oracle 驱动程序连接到数据库 但对于 OracleConnection 的生命周期 我不太同意我的同事的观点 创建成本高吗 它是线程安全的吗 我可以在请求之间重复使用它 还是应该为每个请求创建一个新的 如果能更详细地解
  • 从 ExecutorService 更新 JProgressBar

    我正在使用 Java ICMP ping 功能对网关进行 ping 操作 为了执行快速 ping 我使用 ExectorService 创建用于 ping 的线程 地址被 ping 或不 后 我想在 ping 后更新 Jprogressba