You're still calling swing methods from a non-EDT. Line 55 you create a new Thread with 'this' as the runnable, in the "run" method it calls isVisible() which is a Swing/AWT method.
I'm suspicious that your kind isn't thread-safe generally.
I really don't think you should be messing with threads, to be honest. They may seem simple but they are actually so difficult to get right.
