这几天我一直在玩一个java小游戏。
当 2 个线程同时调用 repaint() 时,会对 java swing 造成影响吗?
我问这个是因为我有一个绘制线程,它以一定的时间间隔调用重绘。此外,当玩家执行操作时,我会调用重绘。两个重绘调用都将重绘相同的自定义 JPanel。
理论上重绘可以被2个线程同时调用。
最佳答案
实际上,在这种情况下可以同时调用repaint()
。但这不是问题。
实际上,像 repaint()
、revalidate()
这样的方法可以在任何线程中安全使用。这些方法实际上将请求排队到 EDT(事件调度线程)以调用 paint()
和 validate()
。因此,如果您使用不同的线程多次调用 repaint()
,它将对调用 paint()
方法的请求进行排队。
点击here了解有关 EDT 的更多信息。
在不使用 EDT 的情况下调用 paint()
方法是不安全的。 (如果你不永远调用更好。)但是使用不同的线程同时调用 repaint()
不会有问题..
关于java - 在多线程中调用重绘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33015382/