【发布时间】:2010-05-14 06:31:01
【问题描述】:
这是关于应该处理(VAD、响度、剪辑)大量声音文件(例如 100k)的应用程序。此时,我创建尽可能多的工作线程(可调用对象)放入内存中,然后使用 threadPool.invokeAll() 运行所有线程,将结果写入文件系统,卸载处理过的文件并继续步骤 1。由于事实上它是一个带有 GUI 的应用程序,我不希望用户在处理所有声音文件时觉得应用程序“没有响应”。 (此时它会导致 invokeAll 阻塞)。我不确定解决此问题的“好”方法是什么。用户在处理时不能做其他事情,但我想显示一个进度条,如“100000 个声音文件中的 10 个已完成”。那我怎么去那里?我是否必须创建一个“观察者线程”,以便每个工作人员都对其进行回调?我对多线程很陌生,不了解这种机制。
如果您需要了解:我正在使用 SWT/JFace。
【问题讨论】:
标签: java multithreading progress-bar