相关疑难解决方法(0)

线程和队列

我有兴趣知道实现基于线程的队列的最佳方法是什么.

例如:

我有10个动作,我想用4个线程执行.我想创建一个队列,其中所有10个动作都是线性放置的,并且用4个线程开始前4个动作,一旦一个线程完成执行,下一个将启动等 - 所以一次,线程的数量是4或小于4.

ruby queue multithreading synchronization

27
推荐指数
4
解决办法
2万
查看次数

了解Java ExecutorService

我正在尝试学习如何使用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)

java swing multithreading swingworker executorservice

3
推荐指数
1
解决办法
4453
查看次数