我有一个实现runnable的java applet类。在这个类的run()方法中,我调用了repaint()。 run方法的内容包含在无限循环中。在applet类的init()中,我使用new Thread(this).start()
来启动第二个线程。我的问题是,如果从run()方法调用repaint()将指示主线程执行paint(),或者paint()将作为第二个线程的一部分执行。如果是前者,那么第二个线程是否会继续循环而不等待(如果可能)执行paint()?
答案 0 :(得分:0)
从技术上讲,Event Dispatching Thread是它自己的线程,与启动applet的(主)线程分开。
重绘过程由RepaintManager
安排。简短的回答基本上是,RepaintManager
将安排重新发生在事件调度线程上。
直接从单独的线程调用repaint
是否安全?它会认为这不是一种好的做法。
作为一个原因,我倾向于谨慎行事,只是确保与UI的所有互动并同步到EDT,无论如何。拯救了很多第二次猜测,恕我直言
我的理解是repaint
通常被认为是线程安全的。但这并不意味着它将在未来继续存在。