gpt4 book ai didi

Java API 向客户端返回进度

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:11:26 24 4
gpt4 key购买 nike

我正在编写一个 java 库 (jar),其中包含许多将由外部软件调用的 API。其中一个 API 将是一个阻塞 API,并且将执行一个可能相当冗长的操作。

我想要一种能够定期向客户提供操作反馈(完成百分比)的方法。

注意 由于它是一个库,我无法使用进度条的 Java Swing 机制来获取和更新进度百分比。我搜索的所有内容都以某种方式导致了这一点。

有什么办法吗?

Answer Update

非常感谢所有发布答案的人。它帮助我掌握了。我在我的 jar 上公开了以下接口(interface)。客户端工作线程将注册并监听我的进度更新。然后它会相应地更新进度条。

void LongAPI(){
while{
do work ;
fireprogress();
}
}
public void addProgressListener(Listener listener) {
listeners.add(listener);

}

public void removeProgressListener(Listener listener) {
listeners.add(listener);
}

private void fireProgress(double pourcent) {
for (Listener listener : listeners) {
listener.setProgress(pourcent);
}
}

Listener 是所有客户端都实现的抽象接口(interface)。它具有 setProgress 属性,客户端可以使用该属性根据需要更新其 UI。

最佳答案

我会给它一个 PropertyChangeSupport 对象以及 addPropertyChangeListener(...)removePropertyChangeListener(...) 方法。在内部,我将使用触发支持对象的 setter 创建绑定(bind) 属性。这样,可以以标准方式通知外部库感兴趣的属性已更改。如果它是基于 Swing 的库,请考虑专门使用 SwingPropertyChangeSupport 对象,以便在 Swing 事件线程上通知所有已添加到支持对象的 PropertyChangeListeners。

例如,请看一下这些问题的答案:

关于Java API 向客户端返回进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19441372/

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