繁体   English   中英

从Java Applet中的非主线程调用repaint()

[英]Calling repaint() from non-main thread in java applet

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

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

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

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

出于某种原因,我倾向于保持谨慎,仅确保与UI的所有交互并同步到EDT,无论如何。 节省大量的第二个猜测,恕我直言

我的理解是, repaint通常被认为是线程安全的。 但这并不意味着它将在未来保持如此。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM