我编写了一个 2D Raycaster,可以将光线绘制到任何 java 形状,包括:
Line2D、Rectangle2D、Ellipse2D、QuadCurve2D 和 CubicCurve2D。
它背后的数学实际上非常复杂和密集,特别是对于四边形和三次方,所以我设置了一个线程池。我根据可用内核的数量制作了一个具有固定线程数的 ExecutionService “exec”。
然后,我将负责每个形状的代码块更改为静态可运行文件。从 raycaster 方法,我会执行 runnables 然后调用 exec.shutdown()。最后,id 创建一个 while 循环,直到 exec.isTerminated 返回 true 才退出。
这确保了所有线程在继续之前都已完成执行。
现在,从我在网上看到的情况来看,这是一种流行的方法,但我没有看到改进的结果。如果不是更糟,它总是一样的。是否有一种正确的方法来使用线程池,它实际上可以提高效率而不是匹配开销?