2013-05-01 94 views
0

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

回答

0

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

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

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

作为事业的问题,我倾向于宁可谨慎的侧面,简单地确保与UI的所有交互,并不管到美国东部时间同步。节省了大量的第二个猜测,恕我直言

我的理解是,repaint通常被认为是线程安全的。这并不意味着它将继续如此。

+0

感谢您的回答,但它并没有真正回答我的问题。 =/ – fvgs 2013-05-01 01:03:22

+0

答案是 - 不依赖于它一直是线程安全的,并作出努力,从美国东部时间(如果可能使用类似'SwingUtilities.invokeLater'内调用'repaint' - 不过这是我的个人感觉学科 – MadProgrammer 2013-05-01 01:09:23