I've read the article here and found it to work wonders. Though I need to know if it is practical.
One technique that I've developed if that if I'm going to make multiple JPanels is that I'll use a different class for each one and confine methods for that panel in that class as well, simply for the sake of organization. But when I see notifyAll(), I think "Oh crap, every single thread in waiting is going to go off when the program hits that line." Does notifyAll() signal all the threads in the program or would it be confined to the class it's written? I want to put in more functions, but not if they're all trigger simultaneously with one button click. Also I need to know if I'm on the right track, or if I need to find another technique.