优缺点:继承Thread参数可以作为子线程类字段,然后使用set传递,而实现Runable只能使用局部变量或者 static 的 字段,但是继承Thread不能继承其他的类,局限了接受其他的代码。而两者的run不能返回值,而futureTask方式则有返回值
1.继承Thread的类
继承Tread类并重写run()方法,在主线程的调用方法中用创建对应的对象,调用委托的新建Thread类对象或者自己的start()方法启动
2.实现Runable接口
创建实现Runable接口的类,并在主线程中用委托类或自己的对象调用start()启动
3.FutureTask方式实现
首先创建一个子线程类实现Callable 并重写call方法,T是返回值类型,然后主线程将这个对象委托给异步任务FutrueTask的新建对象,调用FutureTask对象的start方法。通过FutureTask对象的get()获取返回值