我正在使用 java swingworker 作为后台进程运行作业
protected static class BackgroundTask extends SwingWorker<Void, Void> {
@Override
protected Void doInBackground() {
//while (!isCancelled()) {
Build_JobParams.runJob();
//}
return null;
}
现在,我需要使用不同的参数多次(异步)调用后台进程。由于它是后台进程,第二次调用将覆盖第一次调用参数。我尝试的一种方法是使用多个线程,例如 Thread t1 = new Thread(){ ...但它会间歇性地抛出异常。
还有什么更好的建议吗?请注意,我不能在 did() { .. 方法中等待调用第二个调用,因为我已经进行了多次调用并且不确定最初的调用次数。请问有什么好的办法吗?
最佳答案
您可以将 ExecutorService 与固定大小的线程池一起使用。您可以找到有关如何设置正确池大小的更多信息here
以下是可以尝试的方法:
- 创建执行器服务:
ExecutorService service = Executors.newFixedThreadPool(5)//将任意值设置为 5
通过实现 Callable 接口(interface)创建可调用对象
在call方法中调用Build_JobParams.runJob()。
service.submit(/** 在此处提交“Callable”实例 **/)
如果 Build_JobParams.runJob() 没有返回任何值,您也可以调用 service.execute 但在这种情况下您需要创建一个 Runnable。
希望这有帮助!!
关于java - 在java swingworker后台线程中使用多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34352020/