加入收藏 | 设为首页 | 会员中心 | 我要投稿 荆门站长网 (https://www.0724zz.cn/)- 图像技术、建站、AI硬件、智能营销、数据搜素!
当前位置: 首页 > 站长资讯 > 动态 > 正文

编程之Phaser原理

发布时间:2020-12-05 13:26:32 所属栏目:动态 来源:互联网
导读:据权威机构预测,在2019年,全球物联网支出预计达到了7450亿美元,这证明了所有领域都在投资物联网技术。引领支出的行业可能并不令人惊讶制造业、运输业、公用事业和消费者领域。 随着组织开发和部署物联网应用和系统,许多组织最终都会与外部专家合作。最近

据权威机构预测,在2019年,全球物联网支出预计达到了7450亿美元,这证明了所有领域都在投资物联网技术。引领支出的行业可能并不令人惊讶——制造业、运输业、公用事业和消费者领域。

随着组织开发和部署物联网应用和系统,许多组织最终都会与外部专家合作。最近的一项调查发现,在2018年,有43%的公司与战略合作伙伴合作以实施其物联网解决方案,而40%的公司让合作伙伴共同管理解决方案。这些数字比2017年略有上升,这表明开发一个成功的物联网系统所涉及的复杂性——该系统具有有价值的目标,并能实现其目标。

多年来,我们与许多公司紧密合作,帮助许多行业开发和部署物联网系统。尽管技术界最大的常量之一是变化,但我们发现成功进行物联网开发需要遵循的基本步骤往往保持不变。我们在下面对它们进行了概述,以提供任何物联网应用或系统项目中需要考虑和执行的最重要内容。

第1步:确定您的目标和投资回报

您需要做的第一件事是确定您想用物联网系统测量什么以及为什么要这样做。您是否希望获得某个流程或某个现场事件(如设备维护)?这个物联网系统的预期投资回报率是多少?

第2步:评估现有流程

物联网系统通常不是为新流程创建的。更常见的情况是,它取代了缓慢、低效或容易出错的现有流程。查看当前流程以及它为何不起作用。确定是否有其他(新)数据可以通过物联网系统收集,以及可以为组织增加什么价值。这一附加值应纳入投资回报中。

第3步:咨询经验丰富的个人或团队以确定选择

目标是以最合理和最具成本效益的方式创建物联网系统。如果您在早期就与物联网咨询专家接洽,那么他们可以帮助您确定您是否需要定制解决方案,或者是否有现成系统可以使用。经验丰富的物联网顾问可以与您的专家交流,以了解您的数据如何影响您的投资回报,并确定收集、存储和分析该数据的最佳方法。

第4步:选择最好的传感器

您需要物联网传感器来收集您要测量的内容,并且有太多选项可供选择。为您的项目选择正确的传感器是成功的关键。正确的传感器可能已经存在,或者您可能需要构建它们。此外,您可能还会发现有合适的传感器,但它们太贵或无法承受物联网系统的恶劣环境。构建或购买决策很重要,如果您的团队不能确定,那么请寻求专家的建议。

第5步:评估可用的通信基础设施

您将如何从物联网传感器收集数据并将其存储和分析?环境中是否有网络?有电吗?同样重要的是要考虑发送多少数据,因为大量数据可能会使成本和电力都望而却步。这些问题的答案将引导您为物联网系统选择正确的通信基础设施。选项包括无线、蜂窝、蓝牙、Wi-Fi、低功耗无线和卫星。(来源物联之家网)还应注意的是,在节点级别(在网络的“边缘”上)建立处理能力可以最大限度地减少发送到云的数据量。发送之前需要减少的数据量越多,则处理能力就越应该本地化。

 

  1. register(),增加一个参与者,需要同时增加parties和unarrived两个数值,也就是state中的16位和低16位
  2. onAdvance(int phase, int registeredParties),当前阶段所有线程完成时,会调用OnAdvance()
  3. bulkRegister(int parties),指定参与者数目注册到Phaser中,同时增加parties和unarrived两个数值
  4. arrive(),作用使parties值加1,并且不在屏障处等待,直接运行下面的代码
  5. awaitAdvance(int phase),如果传入的参数与当前阶段一致,这个方法会将当前线程置于休眠,直到这个阶段的参与者都完成运行。如果传入的阶段参数与当前阶段不一致,立即返回
  6. arriveAndAwaitAdvance(),当前线程当前阶段执行完毕,等待其它线程完成当前阶段
  7. arriveAndDeregister(),当一个线程调用来此方法时,parties将减1,并且通知这个线程已经完成来当前预警,不会参加到下一个阶段中,因此Phaser对象在开始下一个阶段时不会等待这个线程。
  8. awaitAdvanceInterruptibly(int phase),这个方法跟awaitAdvance(int phase)一样,不同之处是,如果这个方法中休眠的线程被中断,它将抛出InterruptedException异常。
  9. getPhase(),当前阶段
  10. getRegisteredParties(),总数
  11. getArrivedParties(),到达总数
  12. getUnarrivedParties(),未到达总数

内部类QNode

QNode用来跟踪当前线程的信息的。QNode被组织成单向链表的形式。用来管理是否阻塞或者被中断。

QNode继承自ForkJoinPool.ManagedBlocker。ForkJoinPool来管理是否阻塞和中断状态。这里只需要重写isReleasable和block。

  • isReleaseable用于判断是否释放当前节点。
  • block用于阻塞。

 

(编辑:荆门站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读