Java Graphics2D线程安全吗?

Java Graphics2D线程安全吗?,java,graphics,Java,Graphics,我想提高代码在java.awt.Graphics2D实例上的绘图性能,该实例是我从BufferedImage获得的。(Swing和UI根本不在图片中)。如果Graphics2D的一个实例是线程安全的,我正在努力寻找一个明确的答案,也就是说,我能在同一个实例上画出N个不同的线程吗,Graphics2D和Graphics是没有任何状态的抽象类,因此理论上它们可能是线程安全的,但这取决于您获得的实际实现/子类 但是,如果您的绘图代码可能导致重叠,则处理多个线程可能会变得相当复杂(如果您可以对形状进行排

我想提高代码在
java.awt.Graphics2D
实例上的绘图性能,该实例是我从
BufferedImage
获得的。(Swing和UI根本不在图片中)。如果
Graphics2D
的一个实例是线程安全的,我正在努力寻找一个明确的答案,也就是说,我能在同一个实例上画出N个不同的线程吗,
Graphics2D
Graphics
是没有任何状态的抽象类,因此理论上它们可能是线程安全的,但这取决于您获得的实际实现/子类

但是,如果您的绘图代码可能导致重叠,则处理多个线程可能会变得相当复杂(如果您可以对形状进行排序,并且不涉及透明度,则可以使用一些z缓冲)。因此,我不需要在同一画布(图形对象)上进行多线程渲染,这将使问题变得毫无意义

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

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

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