美文网首页
单线程执行设计模式

单线程执行设计模式

作者: jiahzhon | 来源:发表于2020-10-04 16:43 被阅读0次
  • 有一个门,始终只能有一个人通过(实际上这里的门就是指共享资源)

  • Gate

public class Gate {
    private int counter = 0;
    private String name = "Nobody";
    private String address = "Nowhere";

    /**
     * 临界值
     *
     * @param name
     * @param address
     */
    public synchronized void pass(String name, String address) {
        this.counter++;
        /*race*/
        this.name = name;
        this.address = address;
        verify();
    }

    private void verify() {
        if (this.name.charAt(0) != this.address.charAt(0)) {
            System.out.println("*******BROKEN********" + toString());
        }
    }

    public synchronized String toString() {
        return "No." + counter + ":" + name + "," + address;
    }
}
  • user
public class User extends Thread {

    private final String myName;

    private final String myAddress;

    private final Gate gate;

    public User(String myName, String myAddress, Gate gate) {
        this.myName = myName;
        this.myAddress = myAddress;
        this.gate = gate;
    }

    @Override
    public void run() {
        System.out.println(myName + " BEGIN");
        while (true) {
            this.gate.pass(myName, myAddress);
        }
    }
}
  • client
public class Client {
    public static void main(String[] args) {
        Gate gate = new Gate();
        User bj = new User("Baobao", "Beijing", gate);
        User sh = new User("ShangLao", "ShangHai", gate);
        User gz = new User("GuangLao", "GuangZhou", gate);

        bj.start();
        sh.start();
        gz.start();
    }
}

相关文章

  • 单线程执行设计模式

    有一个门,始终只能有一个人通过(实际上这里的门就是指共享资源) Gate user client

  • 拉勾前端学习-模块一-JavaScript异步编程

    同步模式与异步模式单线程最初设计为浏览器脚本,用于操作DOM,为了避免线程同步的不问题,设计之初就采用了单线程模式...

  • 浅谈 Javascript 异步编程

    单线程 JavaScript 目前主流的 JavaScrip 环境都是以单线程模式执行的 javaScript 代...

  • Javascript异步回调

    同步模式与异步模式 Javascript语言执行环境是“单线程”,一次执行一个任务,并且按照顺序依次执行。但是遇到...

  • JS异步模式-事件循环

    目前主流的javaScript环境都是单线程执行的,采用单线程设计的原因,是因为最早的设计初衷是运行在浏览器端的脚...

  • redis笔记(三)redis的设计与开发

    redis的设计与开发 Redis基本通讯模型执行过程:发送指令 -> 执行命令 -> 返回结果执行命令:单线程执...

  • 异步与很多其他

    Javascript语言的执行环境是“单线程”,Javascript语言将任务的执行模式分成两种:同步和异步。 “...

  • Javascript异步编程

    同步模式与异步模式 事件循环与消息队列   JavaScript 单线程指的是浏览器中负责解释和执行 JavaSc...

  • 学习笔记-JavaScript异步编程以及手撕Promise

    JavaScript异步编程 众所周知,目前主流的JavaScript环境都是以单线程模式去执行的JavaScri...

  • 多线程-GCD

    Dispatch Queues Serial Dispatch Queue单线程模式,一个任务处理完才会执行下一个...

网友评论

      本文标题:单线程执行设计模式

      本文链接:https://www.haomeiwen.com/subject/zzunuktx.html