Java创建线程的几种姿势
一、简单介绍
在并发编程中,最基本的就是创建线程了。一般创建线程有四种方式:
- 继承Thread
- 实现Runnable接口
- 实现Callable接口,结合FutureTask使用
- 利用线程池ExecutorService、Callable、Future来实现
二、基本使用
1.继承Thread
|
|
继承Thread类,覆写run()方法,通过start()方法启动新线程。
2.实现Runnable接口
|
|
实现Runnable接口,实现run()方法,获取实现Runnable接口的实例,创建Thread,通过start()启动新的线程
3.实现Callable接口
|
|
实现Callable接口,实现call()方法,创建FutureTask实例,将FutureTask作为Thread的参数创建Thread,通过start()启动一个新的线程,通过FutureTask.get()获取线程的返回结果。
4.通过线程池创建
|
|
创建线程池,创建Runnable任务,通过execute执行任务
三、使用区别
Runnable和Callable区别
Runnable与Callable最根本的区别就是:
- Runnable无返回结果
- Callable有返回结果
1.Runnable
Runnable不关心返回,所以任务自己默默的执行就可以了,也不用告诉我完成没有,我不care,您自己随便玩,所以一般使用就是
|
|
换成JDK8的 lambda表达式就更简单了
|
|
2.Callable
Callable接口支持返回执行结果,此时需要调用FutureTask.get()方法实现,此方法会阻塞主线程直到获取‘将来’结果;当不调用此方法时,主线程不会阻塞!
|
|