java多线程实现的四种方式
java多线程实现的四种方式
1、继承Thread类,重写run方法(其实Thread类本身也实现了Runnable接口)
2、实现Runnable接口,重写run方法
3、实现Callable接口,重写call方法(有返回值)
4、使用线程池(有返回值)
1、继承Thread类,重写run方法
每次创建一个新的线程,都要新建一个Thread子类的对象
启动线程,new Thread子类().start()
创建线程实际调用的是父类Thread空参的构造器

2、实现Runnable接口,重写run方法
不论创建多少个线程,只需要创建一个Runnable接口实现类的对象
启动线程,new Thread(Runnable接口实现类的对象).start()
创建线程调用的是Thread类Runable类型参数的构造器

3、实现Callable接口,重写call方法(有返回值)
自定义类实现Callable接口时,必须指定泛型,该泛型即返回值的类型
每次创建一个新的线程,都要创建一个新的Callable接口的实现类、
如何启动线程?
(1)创建一个Callable接口的实现类的对象
(2)创建一个FutureTask对象,传入Callable类型的参数
public FutureTask(Callable<V> callable){……}
(3)调用Thread类重载的参数为Runnable的构造器创建Thread对象
将FutureTask作为参数传递
public class FutureTask<V> implements RunnableFuture<V>
public interface RunnableFuture<V> extends Runnable, Future<V>
如何获取返回值?
调用FutureTask类的get()方法

4、线程池
Executors类

