2013-05-01 27 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