创建线程有4种方式:
- 继承Thread类
- 实现Runnable接口
- 实现Callable接口
- 线程池创建线程
Runnable 和 Callable 有什么区别
- Runnable 接口run方法没有返回值
- Callable接口call方法有返回值,是个泛型,和Future、FutureTask配合可以用来获取异步执行结果
- Callable接口的call方法允许抛出异常,而Runnable接口的run方法的异常只能内部消化,不能继续上抛
启动线程的时候,可以使用run方法吗?run方法和start方法区别?
start方法:用来启动线程,通过该线程调用run方法,start方法只能被调用一次。
run方法:封装了要被线程执行的代码,可以调用多次