Tag: concurrency

使用ExecutorService控制任务执行顺序

我有一个将异步任务委托给线程池的进程。 我需要确保按顺序执行某些任务。 所以举个例子 任务按顺序到达 任务a1,b1,c1,d1,e1,a2,a3,b2,f1 任务可以按任何顺序执行,除非存在自然依赖性,因此必须按顺序处理a1,a2,a3,方法是分配到同一个线程或阻止这些,直到我知道之前的#任务完成为止。 目前它不使用Java Concurrency包,但我正在考虑改变以利用线程管理。 有没有人有类似的解决方案或如何实现这一目标的建议

JPanel添加但没有“及时”显示

我有一个显示JPanels的JFrame,具体取决于您单击的MenuItem。 它工作正常,但是现在我需要在将一个JPanel添加到框架并且正在显示它时调用一个方法(因为我在该面板中使用了JFreeChart,当JPanel可见时我必须调用chartPanel.repaint() ) : this.getContentPane().add( myjpanel, BorderLayout.CENTER ); //this = JFrame this.validate(); myjpanel.methodCalledOnceDisplayed(); 看起来好吗? myjpanel真的被展示了吗? 似乎不是: public void methodCalledOnceDisplayed() { chartPanel.repaint() } 这不起作用( chartPanel.getChartRenderingInfo().getPlotInfo().getSubplotInfo(0)抛出IndexOutOfBoundsException)。 这意味着调用重绘时JPanel不可见,我测试了以下内容: public void methodCalledOnceDisplayed() { JOptionPane.showMessageDialog(null,”You should see myjpanel now”); chartPanel.repaint() } 现在它工作了,我看到myjpanel在警报后面,正如预期的那样,chartPanel被重新绘制,并且没有发生exception。 编辑 :SSCCE(需要jfreechart和jcommon: http ://www.jfree.org/jfreechart/download.html) import java.awt.BorderLayout; import java.awt.EventQueue; import java.awt.Font; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JOptionPane; […]

为什么并行流不使用ForkJoinPool的所有线程?

所以我知道如果你在没有自定义ForkJoinPool的情况下使用parallelStream ,它将使用默认的ForkJoinPool,默认情况下,只有少一个线程,因为你有处理器。 因此,如此处所述 (以及该问题的另一个答案)为了获得更多的并行性,您必须: 将并行流执行提交给您自己的ForkJoinPool:yourFJP.submit(() – > stream.parallel()。forEach(doSomething)); 所以,我这样做了: import java.util.Set; import java.util.concurrent.ExecutionException; import java.util.concurrent.ForkJoinPool; import java.util.stream.IntStream; import com.google.common.collect.Sets; public class Main { public static void main(String[] args) throws InterruptedException, ExecutionException { ForkJoinPool forkJoinPool = new ForkJoinPool(1000); IntStream stream = IntStream.range(0, 999999); final Set thNames = Collections.synchronizedSet(new HashSet()); forkJoinPool.submit(() -> { stream.parallel().forEach(n -> { System.out.println(“Processing […]

什么是JVM调度算法?

我真的很好奇JVM如何与线程一起工作! 在我的互联网搜索中,我发现了一些关于RTSJ的资料,但我不知道这是否是我答案的正确方向。 我还在sun的论坛http://forums.sun.com/thread.jspa?forumID=513&threadID=472453中找到了这个主题,但这并不令人满意。 有人可以给我一些关于JVM调度算法的指示,材料,文章或建议吗? 我也在寻找有关调度程序中Java线程的默认配置的信息,例如“时间切片时每个线程需要多长时间”。 这个东西。 我将不胜感激任何帮助 ! 谢谢 !