Felix> The timer lives in the awt thread, so we need no invokeLater. Or do I miss Felix> something?
I thought it was java.util.Timer. I did not notice that was javax.swing.Timer. swing timer is fine. Philippe>I agree. The only reason I would see for calling invokeLater would maybe to Philippe>avoid freezing UI if the call takes more than some limit invokeLater is not required provided the timer is swing timer. I wonder if we can rework log panel into "append" calls instead of "set text from scratch". Philippe>For me there is only 1 Timer thread no ? I'm not sure if we can reuse that swing timer to aggregate events form listeners (e.g. statistics listeners, etc). Felix>The component is set to an empty text Oh, I did not notice that. On the other hand, it looks awkward. I find "buffer.clear(); modified=true;" easier to reason about since that results in a single place where the textarea gets updated. PS. Are you sure "events.clear()" is thread-safe? PPS. Can we move format.format(logEvent) out of syncrhonized(events) block? Vladimir
