Path: csiph.com!v102.xanadu-bbs.net!xanadu-bbs.net!feeder.erje.net!eu.feeder.erje.net!newsfeed.fsmpi.rwth-aachen.de!news-1.dfn.de!news.dfn.de!fu-berlin.de!uni-berlin.de!not-for-mail From: ram@zedat.fu-berlin.de (Stefan Ram) Newsgroups: comp.lang.java.programmer Subject: The invokeLater loop Date: 10 May 2013 18:54:38 GMT Organization: Stefan Ram Lines: 22 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit X-Trace: news.uni-berlin.de wvmGy2+QWTwavC1VkErB7QjAarUqNVeKDB6qO5arRdM7v7 X-Copyright: (C) Copyright 2013 Stefan Ram. All rights reserved. Distribution through any means other than regular usenet channels is forbidden. It is forbidden to publish this article in the world wide web. It is forbidden to change URIs of this article into links. It is forbidden to remove this notice or to transfer the body without this notice. X-No-Html: yes Content-Language: en Xref: csiph.com comp.lang.java.programmer:23990 I invented what I call the »invokeLater loop«: class Object implements java.lang.Runnable { int i = 0; public void run() { java.lang.System.out.println( i++ ); javax.swing.SwingUtilities.invokeLater( this ); }} public class Main { public static void main( final java.lang.String[] args ) { javax.swing.SwingUtilities.invokeLater( new Object() ); }} What is it good for? Maybe it provides a way to loop while still allowing Swing events to be processed in parallel? (So you do not always have to spawn another thread besides the EDT.) One also might see it as a kind of recursion that will not overflow that stack. But since it does not atually nest incarnations, it is not really adopted for recursive programming.