实现Runnable接口比继承Thread类更灵活,因为Java只支持单继承,实现Runnable接口可以让类继承其他类的同时实现多线程功能。
只有调用start()方法才会创建新的线程并在新线程中执行run()方法。直接调用run()方法只是在当前线程中执行,不会创建新线程。
Callable接口的call()方法可以返回结果并抛出异常,而Runnable接口的run()方法返回void且不能抛出检查异常。
守护线程的优先级不一定是最低的,可以通过setPriority()方法设置守护线程的优先级。守护线程的特点是在所有非守护线程结束时自动结束。
线程中的异常不能被主线程捕获,需要使用UncaughtExceptionHandler接口来处理线程中的未捕获异常。