创建线程的方式
实现 Runnable 接口
继承 Thread 类,覆盖 run 方法,调用
Thread#start
启动继承 Thread 类
实现 Runnable 接口,创建实例,作为
Thread
构造参数传入,调用Thread#start
启动实现 Callable 接口
实现 Callable 接口,创建实例,作为
FutureTask<>
构造参数创建FutureTask
对象,将 FutureTask 对象作为Thread
构造参数传入,调用Thread#start
启动线程池
使用 ThreadPoolExecutor 创建一个线程池,利用
submit()
方法提交线程,Future<Object>
接收返回
区别
继承 Thread 和实现 Runnable、Callable 接口区别
实现接口不影响继承其他类
实现 Runnable 和 Callable的区别
Runnable 无返回,Callable 有返回。
Thread 启动和线程池启动方式
线程池能够重复使用线程,节省 CPU 资源。