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.