创建线程的三种方式:
1.继承Thread类来实现线程
run()为线程类的核心方法,相当于主线程的main方法,是每一个线程的入口
一个线程只能调用1次start方法
run()方法时由jvm创建完本地操作系统级线程后回调的方法,不能手动调用(否则就是普通方法)
2.覆写Runnable接口来实现线程
Thread类其实也是通过覆写Runnable接口来实现的
比起Thread类来实现线程,更推荐使用Runnable接口来实现线程,这样可以覆写Runnable接口实现线程可以避免单继承局限
3.覆写Callable接口来实现线程
通过call()方法来执行线程方法
Runnable和Callable接口的主要区别就是:
callable接口有返回值,而Runnable接口没有返回值,callable接口的call方法可以抛出异常,runnable接口的run方法的异常只能内部处理