- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个简单的计时器,每分钟调用一个方法进行后台处理。它是这样调用的:
EmailSender singletonSender = new EmailSender(cog);
timer.scheduleAtFixedRate(singletonSender, 60000, 60000);
它每分钟收到一个事件,检查是否有任何理由发送电子邮件,发送电子邮件,然后完成。
这一切都假设系统已启动并正在运行,并且有可用的 CPU 周期。如果计算机坐在那里什么都不做,处理也不花时间,这一切都很容易理解。但是我找不到关于当计算机过于繁忙或进入休眠/hibernate 模式时它的行为方式的文档。
如果计算机进入休眠状态会怎样?
在检查了许多令人困惑的日志之后,我终于运行了一个测试。如果它打印出日志语句和当前时间。我在 7:30(大约)让计算机进入休眠状态,并在 10 分钟后(大约)将其唤醒。这是日志跟踪:
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:24:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:25:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:26:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:27:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:28:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:29:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:30:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:31:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:09
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:40:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:41:28
BACKGROUND EVENTS: Processed 0 background events at Fri Nov 06 07:42:28
它似乎发送了一堆“ catch ”事件。换句话说,就好像它们在计算机处于 sleep 状态时堆积在计算机中,然后一旦机器重新启动它们就会全部涌出。就好像所有事件都已生成,但由于无法传递它们而受阻,最后,当计算机启动时,所有事件都涌出。
这是否按照设计为以这种方式工作而记录在案?显然,这会影响您设计系统的方式。如果您期望每天发生 1440 个事件,那么您最终将获得 1440 个事件,这是合乎逻辑的。然而,如果你只是在做后台处理,并且每次调用都完成了所有等待的后台工作,那么那些额外的调用就没有意义了。您需要设计一种方法来快速处理这些额外的大量调用。
如果需要超过一分钟才能响应调用怎么办?
鉴于上述证据,如果计算机变得非常繁忙,您的事件可能会延迟发送,但您仍会收到所有事件。所以如果一个事件的处理时间超过一分钟,问题是:你能保证事件不会到达不同的线程吗?换句话说:你确定你的处理程序在最后一次调用完成之前永远不会被调用。 Timer 机制试图隐藏有关您在哪个线程上被调用的详细信息,并且假设所有调用都是在单个线程上进行的假设似乎是合理的,但是,我再次寻找关于此的明确文档。
我想知道的是:这是严格定义的某个地方吗?或者只是当前版本实现方式的产物?
最佳答案
至少 Timer#scheduleAtFixedRate
的 Javadocs建议您观察到的内容:
In fixed-rate execution, each execution is scheduled relative to the scheduled execution time of the initial execution. If an execution is delayed for any reason (such as garbage collection or other background activity), two or more executions will occur in rapid succession to "catch up." In the long run, the frequency of execution will be exactly the reciprocal of the specified period (assuming the system clock underlying Object.wait(long) is accurate).
关于java - Java 定时器如何在胁迫下行动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33570783/
我有一个 RelativeLayout,我从 drawable 设置了背景。我能够将 RelativeLayout 的背景更改为另一个RadioButton 被选中。但是当它发生变化时我该如何给它一个
我正在尝试在 Google 的 Play 报亭应用中复制此动画: http://i.imgur.com/UuX1PRO.webm 我的布局看起来像这样: ... more
我一直在评估 Airflow 。我有一个用例,我有一个每小时运行一次的工作流,以获得每小时的数据聚合。另一个每天运行以获得相同的每日聚合。是否可以创建一个组合工作流,其中仅当所有小时聚合在过去一天都成
我有下一个结构: Activity 1: Activity 2: Form to add new item to the recycler View. RecyclerView
我只是想知道 JavaFx 中是否有任何简单的动 Canvas 局方法,例如 VBox 和 HBox。我希望我的应用程序在指定时间后更改 VBox 的背景颜色。但我意识到没有任何类似于 FillTra
我正在使用 Angular 4 动画在按钮上测试一个简单的淡入/淡出动画。我遇到的问题是,因为我使用的是 bool 值,所以没有任何东西被触发。从开发工具来看,它看起来像一个 .ng-animatin
有没有人在 SublimeREPL 中使用 irb 交换 pry 有任何运气?我很接近,我想。我没有收到错误,但是当我输入命令时也没有收到响应。每次我点击返回时,它的行为就像缓冲区被重置一样。 我正在
今天要向小伙伴们介绍的是一个能够快速地把数据制作成可视化、交互页面的 Python 框架:Streamlit,分分钟让你的数据动起来! 犹记得我在做机器学习和数据分析方面的毕设时,
简而言之,我想缩放 View - 就像 Android Market 一样,当您单击“更多”按钮时,例如在“描述”上。 我发现,Android Market 具有以下结构的布局: > 64d
我似乎无法让它工作。 我正在尝试每天发送一个给定的文件,其名称类似于“file_{{ds_nodash}}.csv”。 问题是我似乎无法将此名称添加为文件名,因为它似乎无法使用。在电子邮件的正文或主题
当您调整窗口大小时, float 的 div 将按预期换行到下一行。但我真的很希望这种布局变化是动画化的。 编辑:顺便说一句,找到一个不依赖于 JQuery 的解决方案会很好。如果需要,我不介意编写自
我有一个复杂的数据处理管道,目前在单台机器上用 Python 实现。 管道是围绕处理属于一系列实现文档、页面、单词等的自定义类的对象而构建的。该管道中的大多数操作都是令人尴尬地并行的——它们处理单个文
我是一名优秀的程序员,十分优秀!