创建线程的三种方式及区别

一:创建线程的三种方式:

 

        1.继承Thread类

        2.实现Runnable接口

        3.使用Callable接口

二:创建线程的具体实现步骤:

        1.继承Thread类

        (1).先继承 Thread类,并且重写run方法

 (2).创建对象(线程对象)

 (3).调用start方法,来启动线程任务

2.实现Runnable接口

        (1).实现Runnable接口,并重写 run方法

(2). 创建该类的实例对象,将该对象作为构造器参数传入Thread类实例对象,这个对象才是真正的线程对象;

(3).调用线程对象的start()方法启动该线程;

3.实现Callable接口

(1).创建Callable接口实现类,并实现call()方法,该方法将作为线程执行体,且该方法有返回值,再创建Callable实现类的实例;

 

(2).使用FutureTask类来包装Callable对象,该FutureTask对象封装了该Callable对象的call()方法的返回值

3).使用FutureTask对象作为Thread对象的target创建并启动新线程,调用FutureTask对象的get()方法来获得子线程执行结束后的返回值

 

二.创建线程的三种方式的对比
1.实现Runnable或Callable接口比继承Thread类的优势

(1)Runnable或Callable接口适合多个线程进行资源共享

(2)java中单一继承,但是多接口实现,提高扩展性

(3)增加程序的健壮性,代码和数据独立

(4)线程池只能放入Runable或Callable接口实现类,不能直接放入继承Thread的类

2.Callable和Runnable之间的区别

(1) Callable重写的是call()方法,Runnable重写的方法是run()方法

(2) call()方法执行后可以有返回值,run()方法没有返回值

(3) call()方法可以抛出异常,run()方法不可以

(4) 运行Callable任务可以拿到一个Future对象,表示异步计算的结果 。通过Future对象可以了解任务执行情况,可取消任务的执行,还可获取执行结果
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值