java run方法完美写法_Java多线程的三种写法

使用多线程的目的只有一个,那就是为了能更好的利用CPU的资源。所以在Java中也必须有多线程,在学习多线程的过程中认识了三种方法实现多线程。

1.继承Thread这个类,重写run方法。

2.实现Runnable接口,实现run方法。(Thread是Runnable的实现类)

(以上两种方法都 无法抛出异常 不拥有返回值)

3.实现Callable接口,实现call方法。(这个方法可对外抛出异常和拥有返回值)

首先说最简单的第一种方法。

一、继承Thread类

在一个类直接继承Thread,重写run方法,该例子是取钱,每次取1000块,取完跳出循环。

136be34314a57ba454d97dfa8ef5d707.png

想要多个线程,只要在线一个类继承Thread,重写run方法,在main方法实例该类,调用该线程。

二、实现Runnable接口,实现run方法。

这里例子也是取钱,但对于上一个例子,这次的钱是共享的。

136be34314a57ba454d97dfa8ef5d707.png

136be34314a57ba454d97dfa8ef5d707.png

输出结果如右图:

这只是举例有这两种方法,其实Thread也可以实现资源共享,因为Thread本来就是实现了Runnable,包含Runnable的功能是很正常。

(知乎里所说的)两者的真正区别最主要的就是一个是继承,一个是实现;其他还有一些面向对象的思想,Runnable就相当于一个作业,而Thread才是真正的处理线程,我们需要的只是定义这个作业,然后将作业交给线程去处理,这样就达到了松耦合,也符合面向对象里面组合的使用,另外也节省了函数开销,继承Thread的同时,不仅拥有了作业的方法run(),还继承了其他所有的方法。综合来看,用Runnable比Thread好的多。

最后一种:Callable

下面的例子是以直播间的访问人数为例子:

136be34314a57ba454d97dfa8ef5d707.png

136be34314a57ba454d97dfa8ef5d707.png

136be34314a57ba454d97dfa8ef5d707.png

最后的输出结果是:

136be34314a57ba454d97dfa8ef5d707.png

Runnable和Callable的区别

(1) Callable规定的方法是 call(), Runnable规定的方法是 run()。

(2) Callable的任务执行后可返回值,而 Runnable的任务是不能返回值。

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

(4)运行 Callable任务可以拿到一个 Future对象

在实现接口时,Callable后又对尖括号中间还有个T,如:,这就是泛型,里面尖括号填写你的返回值的类型:

如:

136be34314a57ba454d97dfa8ef5d707.png

在实现call方法时,返回值的类型也要一样,如:

136be34314a57ba454d97dfa8ef5d707.png

编辑整理 丨刘蕊

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值