gpt4 book ai didi

java - Java 中的异步 UI

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:40:56 24 4
gpt4 key购买 nike

我在做Java程序,距离上次使用Java已经一年多了,有点生疏了。该程序使用 Runtime.exec() 调用其他程序来完成它的肮脏工作,并且需要在其他程序运行时实时解析它们的输出并相应地更新自己的 GUI。最好的方法是什么?我目前正在考虑让我的外部程序执行器类有自己的内部线程来轮询外部程序的输出流,然后在发生值得注意的事情时引发事件,然后实现我自己的 EventListener 接口(interface)我的用户界面类。但是我担心这将如何处理被触发事件的异步性质。任何人都可以就如何保护听众免受竞争条件和/或更好的方法提出任何建议吗?谢谢。

最佳答案

  • 您不必轮询外部进程中的输出。从 Runtime.exec(String) 返回的 Process 对象具有为 stderr 和 stdout 以及 OutputStream< 获取 InputStream 的方法 用于标准输入。
  • 您可以通过 OutputStream 发送消息进行通信。只需将您的数据推送到流中即可。
  • 生成一个等待标准输出 OutputStreamThread。每当有新的数据要读取时,它就会读取数据并创建一个事件。
  • 使用事件调度线程 EDT 调度事件。 Swing/AWT GUI 也使用它,所以没有问题。
  • 您还可以使用事件将内容发送到标准输入。只需创建一个 EventListener 来监听特定的输出事件。这些事件(可能被翻译成不同的格式)到 OutputStream 并且可以被外部进程的标准输入读取。

祝你好运。

关于java - Java 中的异步 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3175474/

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