gpt4 book ai didi

java - 线程进度和状态的图形/文本显示

转载 作者:行者123 更新时间:2023-11-30 11:48:09 24 4
gpt4 key购买 nike

我正在开发一个大量使用并发线程的程序 (Java)。我经常遇到这些线程正在执行的工作的问题。这不是实际线程处理的问题,而是它正在做的实际事情(数据库访问、数学计算、文件 IO 等)。

我想提供一些从控制台实时查看线程状态的方法。也许是这样的:

THREAD ID   THREAD STATUS         TABLE NAME          ELAPSED TIME         
Thread 1: Dumping MSF011 22s
Thread 2: Conversion MSF002 2h 8m
Thread 3: Conversion MSF020 10s
Thread 4: Loading MSF001 14m

ITEMS LEFT IN QUEUE: MSF033, MSF123, MSFXYZ

之类的。

理想情况下,我希望看到更新到位(因此没有新行等,但我对任何能让我快速查看此类信息的想法持开放态度。

最佳答案

控制台输出有多重要?我的意思是,其他机制(即图形)可以吗?

无论哪种方式,我都会将其分为两个步骤。

  1. Instrument你的话题
  2. 显示仪器数据

检测你的线程

如果 JConole 和默认线程信息不够(等待、堆栈跟踪等),您可以让您的线程在运行过程中发布对其状态的更新。我喜欢使用 MBean 来执行此操作,这样您就可以将更新的发布与阅读分开。否则,您可以使用状态更新一些共享位置,并在同一个 VM 中完成读取。甚至可能将进程信息转储到文件中?

显示仪器数据

一旦线程更新了其中的进程信息,就应该直接显示它。如果您真的希望控制台输出不滚动,我认为 ncurses 之类的东西是您唯一的选择。

否则,编写一个读取仪器数据并更新显示的小 UI 可能会更简单。如果您使用的是 MBean(因此将 UI 与服务器物理分离)或只是从文件中读取,则可以通过 MBean 服务器读取此数据。如果您想要一些漂亮的图表,JFreeChart 是不错的选择。

说了这么多,Haim 写了一个“顶级”风格的东西来监控线程。参见 here .可能有用

关于java - 线程进度和状态的图形/文本显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8996533/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com