John B. Matthews wrote:
In article
<fa7cd57f-39be-4f4b-b8e6-1a3213ab8b35@f19g2000yqo.googlegroups.com>,
cbossens73@yahoo.fr wrote:
On Apr 6, 12:48 am, Lew <no...@lewscanon.com> wrote:
Knute Johnson wrote:
[...]
All this is fascinating :)
Indeed. I often turn to the Memory Consistency Properties summary found
in java.util.concurrent, noting "The results of a write by one thread
are guaranteed to be visible to a read by another thread only if the
write operation happens-before the read operation. [...] A call to start
on a thread happens-before any action in the started thread":
<http://java.sun.com/javase/6/docs/api/java/util/concurrent/package-summa
ry.html>
The latter condition can be met by having the buffer-modifying thread
call java.awt.EventQueue.invokeLater(), which runs its argument
asynchronously on the EDT:
<http://java.sun.com/javase/6/docs/api/java/awt/EventQueue.html>
I believe the notification sent by javax.swing.Timer also runs on the
EDT, thus satisfying the same requirement:
<http://java.sun.com/javase/6/docs/api/javax/swing/Timer.html>
Often, modifying the buffer is the more time consuming operation, while
drawing the buffer's contents can proceed quickly without congesting the
EDT.