栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

多线程基础篇-03

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

多线程基础篇-03

文章目录

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

一、多线程模拟银行叫号

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

二、具体策略类




三、环境实现类

![在这里插入图片描述](https://img-blog.csdnimg.cn/78918a60479d4a3c815af842035bcc0d.png

四、调用

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

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

2.调用

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

总结

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/872107.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号