JavaMemoryModel: Code that sleeps and expects to see changes

From: Bill Pugh (pugh@cs.umd.edu)
Date: Sun Oct 24 1999 - 13:26:08 EDT


As much as I would be happy to rule that programs that
sleep in a loop without synchronization and expect to see
changes are just wrong, I think this may be the
one area where the strongest reeducation campaign is
needed.

>From Sun's demo programs included with jdk1.3 beta:

Here is the code from demo/applet/Blink/Blink.java

    Thread blinker = null; // The thread that displays images

    public void run() {
        Thread me = Thread.currentThread();
        while (blinker == me) {
            try {
                Thread.currentThread().sleep(delay);
            }
            catch (InterruptedException e) {
            }
            repaint();
        }
    }
    public void stop() {
        blinker = null;
    }

The identical idiom appears in:
  applet/Animator/Animator.java
  applet/Clock/Clock2.java
  applet/Fractal/CLSFractal.java
  applet/GraphLayout/Graph.java
  applet/NervousText/NervousText.java

Very similar idioms (that would also fail) appear in:
  jfc/Java2D/src/RunWindow.java
  jfc/Java2D/src/Intro.java
  jfc/Java2D/src/DemoSurface.java
  jfc/Java2D/src/MemoryMonitor.java
  jfc/Java2D/src/PerformanceMonitor.java
-------------------------------
JavaMemoryModel mailing list - http://www.cs.umd.edu/~pugh/java/memoryModel



This archive was generated by hypermail 2b29 : Thu Oct 13 2005 - 07:00:20 EDT