我正在编写一个java library ( jar )
包含许多将由外部软件调用的 API。其中一个 API 将是一个阻塞 API,并且将执行一个可能相当冗长的操作。
我想要一种能够定期向客户提供操作反馈(完成百分比)的方法。
NOTE
由于它是一个库,我不能使用进度条的 Java Swing 机制来获取和更新进度百分比。我搜索的一切都以某种方式导致了这一点。
有没有办法做到这一点?
Answer Update
非常感谢所有发布答案的人。它帮助我掌握了。我在我的 jar 上暴露了以下接口。客户端工作线程将注册并监听我的进度更新。然后它会相应地更新进度条。
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
是一个所有客户端都实现的抽象接口。它具有 setProgress 属性,客户端可以根据需要使用该属性更新其 UI。