【发布时间】:2013-05-24 09:37:53
【问题描述】:
我编写了一个 2D Raycaster,可以将光线绘制到任何 java 形状,包括:
Line2D、Rectangle2D、Ellipse2D、QuadCurve2D 和 CubicCurve2D。
它背后的数学实际上非常复杂和密集,特别是对于四边形和三次方,所以我设置了一个线程池。 我根据可用内核的数量创建了一个具有固定线程数的 ExecutionService “exec”。
然后,我将负责每个形状的代码块更改为静态可运行文件。 从 raycaster 方法中,我将执行 runnables 然后调用 exec.shutdown()。 最后,id 创建一个在 exec.isTerminated 返回 true 之前不会退出的 while 循环。
这可确保所有线程在继续之前都已执行完毕。
现在,从我在网上看到的情况来看,这是一种流行的方法,但我没有看到改进的结果。 如果不是更糟,它总是一样的。 有没有合适的方法来使用线程池,实际上提高效率而不是匹配开销?
【问题讨论】:
-
也许你的 while 循环占用了大量的 cpu
-
请发布您的代码!
-
也许您的机器中有 1 个 CPU 内核,而您的程序已经使用了 100% 的 CPU 功率?
标签: java multithreading threadpool raytracing raycasting