The threads aren't synchronized, so there is no guarantee that the Runnable.run() will beat the main's println. Since you've tossed an exception, it must push that exception from the run into the main so that the main thread has to deal with the exception itself.
You'll need to read up on concurrency, here's the lesson's from the oracle tutorials: http://docs.oracle.com/javase/tutori...ncy/index.html
There are a number of methods, both manual and built in. I typically thread manually where I force explicit blocks on threads and notify when complete.