What you need to do is load up your plugin, and toss the contents of that run method into a new thread. That way it forks off and does it's own thing while the plugin turns around and tells JavaOp "okay, yeah, I'm finished loading". What's happening now is the plugin isn't telling JavaOp that until all the socket work is done (unreachable state), hence the freezing.