Graphics2D线程安全吗?

时间:2019-04-11 14:35:36

标签: java graphics

我想提高代码在java.awt.Graphics2D上获得的BufferedImage实例上的绘图性能。 (Swing和UI根本不在图片中)。无论Graphics2D的实例是否是线程安全的,我都在努力寻找一个明确的答案,即。是否可以在同一实例上设置N个不同的线程?

1 个答案:

答案 0 :(得分:1)

好吧,Graphics2DGraphics是没有任何状态的抽象类,因此从理论上讲它们可能是线程安全的,但这取决于您获得的实际实现/子类。

但是,如果您的绘图代码可能导致重叠,则处理多个线程可能会变得非常复杂(如果您可以订购形状并且不涉及透明度,则可能可以使用一些z缓冲) 。因此,我不会在同一画布(图形对象)上进行多线程渲染而感到烦恼。

相反,我建议将渲染分为多个离散任务,并在最后合并结果。

根据您实际渲染的内容,我可以想象2种基本方法:

  • 将渲染拆分为多个图块,最后将它们组合起来
  • 如果要渲染成本高昂的复杂形状,则将它们渲染成中间图像,然后让一个线程通过将这些中间图像渲染到最终画布上将它们组合起来(这可能需要排序中间步骤)