Are all GLEventListeners on same GLContext called on same thread?

I have several GLEventListener, all of which are attached to GLCanvases that share the same GLContext. I would like to create an object that tracks which lights are currently on (every time I enable or disable a light, I will flip a bit in this data structure), and other light data. For this to work, whenever the display() method of one GLEventListener is called, I must not be inside the display() method of any other GLEventListener attached to the same GLContext.

Am I guaranteed thread mutual exclusivity while in display()? Do I need to chop my display() code in synchronized blocks?

The current JOGL implementation guarantees this property.

What are the chances this could change in the future?

It’s very unlikely to change. Before JSR-231 1.0 we experimented with changing the one single thread the GLEventListeners are called from, and those experiments didn’t work well. Basically you’re pretty much guaranteed that the GLEventListener callbacks will all be made from the same thread and that that thread will be the AWT Event Dispatch Thread (in the JOGL / AWT binding).