MyThread 我的线程 public class MT 线程编号 public long tId; 队列最大值单位时间内可以处理的最大次数 取值参考-----单位时间:100ms 单次耗时:5ms 队列最大值:100 5 = 20 private static final double QUEUE_SIZE_MAX = 20D; 队列当前
该代码是一个自定义的线程类MT,它包含了一个线程编号tId、一个队列最大值QUEUE_SIZE_MAX、当前队列下标currentIndex、目标队列下标targetIndex、设备数据队列列表cdsArray、队列使用率usageRate和线程运行状态status。
MT类的构造方法中创建了一个新的线程t,并在该线程中循环执行以下操作:
- 判断currentIndex和targetIndex是否相等,如果相等则将status设置为WAIT,并调用cdsArray对象的wait()方法使线程进入等待状态。
- 如果currentIndex和targetIndex不相等,则将status设置为FUCKING,并将currentIndex设置为下一个下标。
- 从cdsArray中取出当前下标对应的CDS对象,如果该对象为null,则继续下一次循环。
- 调用CDS对象的updateData()方法,更新数据。
- 调用CDS对象的judgeBaseData()方法,判断基础数据。
- 调用CDS对象的judgeResult()方法,判断结果。
- 将cdsArray当前下标位置的值置为null,表示处理完成。
- 设置cds对象的endTime属性为当前时间。
- 如果在执行过程中发生异常,打印异常信息。
MT类还提供了addCds()方法用于向队列中添加任务,该方法会在cdsArray中找到下一个目标下标位置targetIndex,并将任务数据cds存放在该位置。同时,设置cds的startTime属性为当前时间。如果当前线程的status为WAIT,表示线程处于等待状态,则调用cdsArray对象的notify()方法唤醒线程。
MT类还提供了getUsageRate()方法用于获取当前线程中队列的使用率。根据currentIndex和targetIndex的值,计算出队列使用率并返回。
MT类中还定义了一个枚举类型Status,表示线程的运行状态,有WAIT和FUCKING两种状态
原文地址: https://www.cveoy.top/t/topic/izNd 著作权归作者所有。请勿转载和采集!