bleh, I typed up a reply only to have IE gobble it up when it became self aware.

Attempt #2:
I don't see a problem with dispatching the mouse events directly to your game logic class from your main loop thread. I also don't see a problem with using sleep() instead of yield(). You *could* pipe the caught mouse events through your game loop thread and then to your logic class, but that's just an extraneous step. If you only want to act on the mouse information as certain times you can always just sit on the information until you are ready to process it in your logic class.
Those mouse events are coming to your from another thread however. If your game loop/logic thread(s) are modifying the same data as your mouse listener methods are modifying you will get a concurrent access modification exception. You will need to synchronize the methods and/or use synchronized code blocks to avoid the problem.
For example say you have a group of mobs onscreen that you store in a list using the java collections. If you get a list iterator and are running over the list, and at the same time you catpure a mouse event that needs to delete one of those mobs (maybe you shot it), calling mobs.remove() is going to cause your program to go crash-boom because the first thread was iterating over the list while the second thread tried to modify it. Again though using synchronized methods, synchronized code blocks, or in this case a sychronized list will fix the problem.
good luck!
~don