1 Runnable接口介绍
这个接口定义的目的就是将线程的执行单元从Thread类抽离出来(解耦),之前看过Thread的run方法:
也就是Thread的run方法默认就是调用Runnable接口的实现的run方法。
无论是Runnable的run方法,还是Thread类本身的run方法都是想将线程控制本身和业务逻辑的运行分离开来,达到职责分明,功能单一的原则,这一点就是设计模式中的策略模式。
我们现在来举例来模拟上述的策略模式:
这样写有个明显的问题就是我们把应纳税额的计算方式实现已经写死了,以后政策改变了我们就要手动更改这部分代码,这明显不符合代码设计开闭原则。
这时候可以运用策略模式来帮忙:当我们的需求的输入是不变的,但输出需要根据不同的策略做出相应的调整时,我们可以将这部分的逻辑抽取成一个接口:
这里做出了一下改动,实现交给了接口的内部方法和Runable接口run类似。
这里就是调用怎么去用它
运行后的结果:
这和Thread中的逻辑单元run抽取成一个接口Runnable有着异曲同工之妙,因为实际业务中,需要提交给线程执行的任务我们是无法预料的,抽取成一个接口之后就给我们的应用程序带来了很大的灵活性。
Thread的职责就是执行任务,而将业务逻辑单独抽取出来作为一个逻辑执行单元,当需要执行时提交给线程即可。于是就有了Runnable接口。
网友评论