美文网首页
关于串行命令队列的设计

关于串行命令队列的设计

作者: 种一片竹林 | 来源:发表于2022-10-19 11:22 被阅读0次

1.该队列应该解决了添加和取出处理的锁的问题。LinkedBlockingQueue add poll 

2.关于心跳命令的发送机制

        当其他命令在规定时间里都没有发出和收到情况下才会发出

        该命令的设计应当能保证不会堆积到命令队列中

        该命令应当能控制命令发送的间隔时间

3.关于命令队列普通命令

       应当有快速队列和慢速队列的概念

       应当有处理组合命令的能力

4.关于Loop 逻辑的设计

        当遇到需要定时轮询的命令(进度问询),不应当开启计时器,应当在命令队列中解决,根据业务type码  和 上一次这个命令的发送时间 来决定当下时间点需要不需要发此命令.

        所以当有轮询业务时 需要在 loop 中补全业务逻辑。

5.连接断开

     状态恢复成init ,业务根据需要设定对应的逻辑(一般 clear)。命令队列对应逻辑设计。

代码如何高内聚低耦合

处理接口:

public interface IO {

    void handleCommand(TCommand command) throws IOException;

}

处理命令:

public interface TAction {//命令集合 可以执行多个command

    void exec(IO io) throws IOException;

    void reset();

}

public abstract class TCommand implements TAction {//每一个命令的基类

    public long lastCommand = System.currentTimeMillis();

    public long runTime = 0L; // cmd 下发时间

    public static final String defaultRes = "                              "; // 返回值截取长度(32)

    public TCommand() {

    }

    public abstract void exec(IO io);

    public abstract String encodeCommand();

    public boolean needRes() {

        runTime = System.currentTimeMillis();

        return true;

    }

    public boolean isEndWith() {

        return false;

    }

    public byte[] getRes() {

        return defaultRes.getBytes();

   }

    public void decodeData(String b) {

   }

}

处理

loop{

action = fastQueue.poll(30, TimeUnit.MILLISECONDS);

if (action != null) {

          action.exec(this);

} else {

    SystemClock.sleep(10); // 命令时间间隔

}

doCheckLoop(this)

}

doCheckLoop(IO io){

//根据当前的业务状态 和 检查的命令上次的执行成功时间来决定要不要下检查的命令 不需要直接return

//可以写对应的 业务manager 去管理自己的业务

switch(当前业务的码){

}

协议的格式:

out :16字节的byte

in :多行

相关文章

  • 关于串行命令队列的设计

    1.该队列应该解决了添加和取出处理的锁的问题。LinkedBlockingQueue add poll 2.关于心...

  • 小驴拉磨之iOS进阶-多线程(5)—— GCD 串行队列

    在之前的文章中也介绍到了串行以及并行,这次是关于串行队列的详细介绍 串行队列 GCD核心概念将任务添加对象,指定任...

  • iOS GCD (一)

    概述 略 串行队列和并行队列 串行队列 - Serial Dispatch Queue 一个串行队列只存在一个线程...

  • GCD四大队列

    一.队列 原则:队列先进先出原则 1.串行队列 串行队列:放到该队列上的任务,在子线程中串行执行 dispatch...

  • iOS 的串行队列和并发队列中的任务是如何执行的

    我们都知道队列有串行队列和并发队列,主队列就属于串行队列,串行队列里面的任务是按顺序执行,并发队列里的任务是并发执...

  • GCD队列使用

    使用GCD前,先对队列总结一下: 串行和并发 GCD中队列分为两种:串行队列、并发队列。串行队列:任务按在队列里的...

  • GCD

    1、同步串行队列 2、同步并行队列 3、异步串行队列 4、异步并行队列 5、死锁 主线程中创建同步串行队列 主线程...

  • 关于多线程GCD 串行/并行、同步/异步

    一、GCD串行/并行队列创建 串行队列: 并行队列: 二、GCD串行/并行队列同步/异步执行 执行内容1: 执行结...

  • 【iOS出租屋进阶】之多线程GCD详解

    线程、任务和队列的概念 异步、同步 & 并行、串行的特点 组合 |并行队列|串行队列 |主队列----|----|...

  • 多线程GCD笔记

    同步函数 + 主队列 异步函数 + 主队列 同步函数 + 串行队列 异步函数 + 串行队列 同步函数 + 并发队列...

网友评论

      本文标题:关于串行命令队列的设计

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