多线程基础篇-03

多线程基础篇-03,第1张

文章目录

`
第三章 策略模式在多线程中的应用

一、多线程模拟银行叫号

public class TicketWindow extends Thread {

private final String name;

private static final int MAX = 50;

private static int index = 1;

public TicketWindow(String name) {
    this.name = name;
}

@Override
public void run() {

    while (index <= MAX) {

        System.out.println("柜台:" + name + "当前的号码是:" + (index++));
    }
}

}

public class Bank {
public static void main(String[] args) {

    TicketWindow ticketWindow1 = new TicketWindow("一号柜台");
    ticketWindow1.start();

    TicketWindow ticketWindow2 = new TicketWindow("二号柜台");
    ticketWindow2.start();

    TicketWindow ticketWindow3 = new TicketWindow("三号柜台");
    ticketWindow3.start();

}

}

二、用Runnable接口将线程的逻辑执行单元从控制中抽取出来

public class TicketWindowRunnable implements Runnable {

private int index = 1;

private final static int MAX = 50;

@Override
public void run() {

    while (index <= MAX) {
        System.out.println(Thread.currentThread() + " 的号码是:" + (index++));
        try {
            Thread.sleep(100);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

}

public class BankVersion2 {

private final static int MAX = 50;

public static void main(String[] args) {

final TicketWindowRunnable ticketWindow = new TicketWindowRunnable();
Thread windowThread1 = new Thread(ticketWindow, “一号窗口”);
Thread windowThread2 = new Thread(ticketWindow, “二号窗口”);
Thread windowThread3 = new Thread(ticketWindow, “三号窗口”);
windowThread1.start();
windowThread2.start();
windowThread3.start();
}
}

三、策略模式在thread和runnable中的应用分析

我们都知道java启动多线程有两种方式,一种是继承Thread类,一种是实现Runnable接口,但是很多小伙伴可能不知道实现Runnable接口这种方式中运用了“策略模式”这种设计模式。下面我们就一起来看看“策略模式”是如何运用在javaduo线程中的。

01
什么是“策略模式”
针对一组算法,将每一种算法都封装到具有共同接口的独立的类中,从而使它们可以相互替换。
看完定义,很蒙圈
下面我们一起来看一个贴近生活的例子

02
举例子
我们去商场买衣服,在付钱的时候,我们可以选择支付宝、微信、xyk、现金这几种付款方式,但是不管哪种付款方式,结果是一样的,都是要给那些钱。
根据不同的情况选择不同的付款方式,这其实就有些类似我们的策略模式。
下面结合定义和付钱的这个例子,我们用代码来演示一下“策略模式”
一、定义抽象策略接口

二、具体策略类




三、环境实现类

![在这里插入图片描述](http://www.kaotop.com/file/tupian/20220509/78918a60479d4a3c815af842035bcc0d.png

四、调用

通过上面这个例子,再结合“策略模式”的定义大致就能明白什么是“策略模式”
03
“策略模式”在多线程的应用
了解完什么是“策略模式”之后,我们再来看一看在java多线程中,策略模式是怎么应用的。
看一下Thread的源码和Runnable接口方式实现多线程,你就会明白了
Thread源码

Runnable接口方式实现线程1.继承runnable接口,重写run方法

2.调用

可以看到在初始化Thread类的时候,我们传入了一个Runnable类型的实例,这个实例就是Thread源码中的target,然后调用start的时候,就会去调用我们重写的run方法。传入不同的Runnable实例,就能调用不同的线程方法了。

总结

策略模式有很多优点也有很多缺点,怎么使用要结合自己的业务场景,这里主要是结合“策略模式”让大家看清java多线程启动的设计理念和如何更好的阅读源码。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/876932.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存