我有兴趣知道实现基于线程的队列的最佳方法是什么.
例如:
我有10个动作,我想用4个线程执行.我想创建一个队列,其中所有10个动作都是线性放置的,并且用4个线程开始前4个动作,一旦一个线程完成执行,下一个将启动等 - 所以一次,线程的数量是4或小于4.
我正在尝试学习如何使用Java的executorservice,
我正在阅读以下讨论Java线程的简单队列
在这里有一个示例
ExecutorService service = Executors.newFixedThreadPool(10);
// now submit our jobs
service.submit(new Runnable() {
public void run() {
do_some_work();
}
});
// you can submit any number of jobs and the 10 threads will work on them
// in order
...
// when no more to submit, call shutdown
service.shutdown();
// now wait for the jobs to finish
service.awaitTermination(Long.MAX_VALUE, TimeUnit.NANOSECONDS);
Run Code Online (Sandbox Code Playgroud)
我尝试实现这个解决方案,为此我创建了一个表单并放置了启动和停止按钮,但我遇到的问题是,如果我在启动按钮上调用此过程,它将挂起完整的表单,我们需要等到所有进程完成了.
我还尝试阅读以下https://www3.ntu.edu.sg/home/ehchua/programming/java/J5e_multithreading.html
但到目前为止,我无法理解如何使其工作,因为点击开始按钮后,我应该获得访问权限,假设我想要停止该过程.
有人可以指导我正确的方向.
谢谢
为了使我的情况更清楚,我正在添加我正在测试的代码.
问题
1)程序执行时,完整表格保持冻结状态.2)进度条不起作用,只有在所有过程完成后才会显示状态.
private void btnStartActionPerformed(java.awt.event.ActionEvent evt) {
TestConneciton();
}
private void …Run Code Online (Sandbox Code Playgroud)