0

我有一个实现可运行的 java 小程序类。在这个类的run() 方法中,我调用了repaint()。run 方法的内容包含在一个无限循环中。new Thread(this).start()在我用来启动第二个线程的小程序类的 init() 中。我的问题是,如果从 run() 方法调用 repaint() 是否会向主线程发出执行paint() 的信号,或者paint() 是否将作为第二个线程的一部分执行。如果是前者,那么第二个线程是否会继续其循环而不等待(如果可能)执行paint()?

4

1 回答 1

0

从技术上讲,事件调度线程是它自己的线程,与启动小程序的(主)线程分开。

重绘过程由RepaintManager. 简短的回答基本上是,RepaintManager将安排在事件调度线程上发生重绘。

repaint直接从单独的线程调用是否安全?它会争辩说这不是一个好习惯。

出于某种原因,我倾向于谨慎行事,并简单地确保与 UI 的所有交互并无论如何都同步到 EDT。恕我直言,节省了很多第二次猜测

我的理解是这repaint通常被认为是线程安全的。但这并不意味着它会在未来保持这种状态。

于 2013-05-01T00:58:19.963 回答