当前位置: 首页 > news >正文

织梦多个网站最新新闻热点事件英语

织梦多个网站,最新新闻热点事件英语,汝阳网站开发,app设计风格openwrt固定速率如果您使用的是纯Java#xff0c;从版本5开始#xff0c;我们有一个方便的调度程序类#xff0c;该类允许以固定速率或固定延迟运行任务#xff1a; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService;Schedu… openwrt固定速率 如果您使用的是纯Java从版本5开始我们有一个方便的调度程序类该类允许以固定速率或固定延迟运行任务 import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService;ScheduledExecutorService scheduler Executors.newScheduledThreadPool(10); 基本上它支持两种类型的操作 scheduler.scheduleAtFixedRate(() - doStuff(), 2, 1, SECONDS); scheduler.scheduleWithFixedDelay(() - doStuff(), 2, 1, SECONDS); scheduleAtFixedRate()将确保每秒精确调用doStuff() 初始延迟为2秒。 当然垃圾回收上下文切换等仍然会影响精度。 scheduleWithFixedDelay()看起来很相似但是它考虑了doStuff()处理时间。 例如如果doStuff()运行doStuff()毫秒则固定速率将仅等待800毫秒直到下一次重试。 另一方面 scheduleWithFixedDelay()总是在重试之间等待相同的时间在本例中为1秒。 在不同情况下两种行为当然都是可取的。 仅记住当doStuff()的速度慢于1秒时 scheduleAtFixedRate()不会保留所需的频率。 即使我们的ScheduledExecutorService有10个线程 doStuff()也绝不会被同时调用并且不会与之前的执行重叠。 因此在这种情况下速率实际上将小于配置的速率。 h1” RxJava中的计划 使用interval()运算符使用RxJava模拟scheduleAtFixedRate()非常简单。 有几点警告 Flowable.interval(2, 1, SECONDS).subscribe(i - doStuff()); 如果doStuff()的速度慢于1秒则会发生不良情况。 首先我们使用Schedulers.computation()线程池它是从interval()运算符继承的默认池。 这是一个坏主意该线程池仅应用于CPU密集型任务并在整个RxJava之间共享。 一个更好的主意是使用您自己的调度程序或至少使用io() Flowable.interval(2, 1, SECONDS).observeOn(Schedulers.io()).subscribe(i - doStuff()); observeOn()从开关computation()由用于调度interval()到io()调度器。 由于subscribe()方法永远不会被设计并发调用 doStuff()永远不会并发调用就像scheduleAtFixedRate() 但是 interval()运算符非常努力地保持恒定的频率。 这意味着如果过一会儿doStuff()的速度慢于1秒我们应该期望MissingBackpressureException …RxJava基本上告诉我们订户速度太慢但是interval() 根据设计不会变慢。 如果您可以容忍甚至期望 doStuff()并发执行重叠则修复起来非常简单。 首先必须使用非阻塞Completable包装阻塞的doStuff() 。 从技术上讲 Flowable Single或Maybe也可以工作但是由于doStuff()为void 所以Completable听起来不错 import io.reactivex.Completable; import io.reactivex.schedulers.Schedulers;Completable doStuffAsync() {return Completable.fromRunnable(this::doStuff).subscribeOn(Schedulers.io()).doOnError(e - log.error(Stuff failed, e)).onErrorComplete(); } 捕获并吞下异常很重要否则单个错误将导致整个interval()中断。 doOnError()允许记录日志但它将异常通过下游传递。 另一方面 doOnComplete()仅吞下异常。 现在我们可以在每个间隔事件中简单地运行此操作 Flowable.interval(2, 1, SECONDS).flatMapCompletable(i - doStuffAsync()).subscribe(); 如果您不subscribe()循环将永远不会开始-但这是RxJava101。请注意如果doStuffAsync()花费一秒钟以上的时间来完成我们将得到重叠的并发执行。 这没什么不对您只需要意识到这一点。 但是如果您真正需要的是固定延迟怎么办 修复了RxJava中的延迟 在某些情况下您需要固定的延迟任务不应重叠并且在两次执行之间我们应保持喘息的时间。 不管周期性任务有多慢都应始终保持恒定的时间暂停。 interval()运算符不适合实现此要求。 但是事实证明RxJava中的解决方案非常简单。 想一想您需要睡一会儿运行一些任务然后在完成此任务后重复。 让我再说一遍 睡一会儿有一些timer() 运行一些任务等待它complete() repeat() 而已 Flowable.timer(1, SECONDS).flatMapCompletable(i - doStuffAsync()).repeat().subscribe(); timer()运算符在一秒钟后发出一个事件 Long类型的0 。 我们使用此事件来触发doStuffAsync() 。 当我们的东西做全码流完成-但我们想重复 好吧 repeat()运算符就是这样做的当它从上游收到完成通知时它会重新订阅。 重新订阅基本上意味着再等待1秒钟 doStuffAsync() –依此类推。 翻译自: https://www.javacodegeeks.com/2017/09/fixed-rate-vs-fixed-delay-rxjava-faq.htmlopenwrt固定速率
http://www.pierceye.com/news/428416/

相关文章:

  • jsp页面如何做网站pv统计wordpress4.7.10
  • 澄海网站建设用asp做网站怎么美观
  • 未满18岁能申请网站备案吗网站做qq链接
  • 网络公司网站开发互联网技术专业学什么
  • 校园网站建设详细的设计方案php网站开发实战
  • 网站设计广州量计价格网站可信度建设
  • 门业网站 源码做企业网站必须要座机吗
  • 广东网站开发推荐wordpress快速加载
  • php网站开发外包北京网站建设迈程网络
  • 微信开发者平台取消授权seo资源网站排名
  • 将网站源码下载下来如何使用网站seo链接购买
  • 可信网站认证必须做苏州那里可以建网站
  • 手机网站底部代码有名的网站建设
  • 做一个网站需要多长时间网站制作有哪些种类
  • 做微信推送的网站小刘网站建设
  • 18款禁用软件app网站入口台州网站推广排名
  • 网站的服务内容济南网站制作方案
  • 微网站模板 phpwordpress 支付宝
  • wordpress dux主题破解安装全屏网站 图片优化
  • 一键建站公司做网站 怎么做留言
  • 制作的网站西安网页设计培训哪里有
  • 株洲市住房和城乡建设局门户网站中国建设银行官网站大同
  • 北京响应式网站制作公司wordpress邀请码注册
  • 衡阳网站开发有哪些公司怎么建设淘客自己的网站、
  • 国内扁平化网站欣赏什么站做咨询网站好
  • 评价校园网站建设范例wordpress插件获取数据库
  • 网站开发具体问题重庆装修公司排名前十名
  • 萝卜建站织梦网站采集如何做
  • 邢台在百度上做个网站河南营销网站建设联系方式
  • 电力建设科学技术进步申报网站教学工作总结