View Discussion Improve Article Save Article Like Article View Discussion Improve Article Save Article Like Article java.lang.Runnable is an interface that is to be implemented by a class whose instances are intended to be executed by a thread. There are two ways to start a new Thread – Subclass Thread and implement Runnable. There is no need of subclassing a Thread when a task can be done by overriding only run() method of Runnable. Steps to create a new thread using Runnable
Example 1
Output: Main thread is- main Thread-0, executing run() method!The output shows two active threads in the program – main thread and Thread-0, main method is executed by the Main thread but invoking the start on RunnableImpl creates and starts a new thread – Thread-0. What happens when Runnable encounters an exception ? Runnable can’t throw checked exception but RuntimeException can be thrown from the run(). Uncaught exceptions are handled by the exception handler of the thread, if JVM can’t handle or catch exceptions, it prints the stack trace and terminates the flow. Example 2
Output: Thread-0, executing run() method! Must catch here! java.io.FileNotFoundException at RunnableDemo$RunnableImpl.run(RunnableDemo.java:25) at java.lang.Thread.run(Thread.java:745) Exception in thread "Thread-0" java.lang.ArithmeticException: / by zero at RunnableDemo$RunnableImpl.run(RunnableDemo.java:31) at java.lang.Thread.run(Thread.java:745)The output shows that Runnable can’t throw checked exceptions, FileNotFoundException in this case, to the callers, it must handle checked exceptions in the run() but RuntimeExceptions (thrown or auto-generated) are handled by the JVM automatically.
Submit a bug or feature |