In Java’s AWT and Swing it is possible to work around this problem by having
the application thread yield() after each stage of the operation. Hopefully, the
update thread gets enough time to finish the screen update until the application
thread is rescheduled again.