- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发的游戏中遇到以下情况:
class GameLogic implements Runnable
{
State state;
private State changeState()
{
//state changes here (note the `private`)
}
// this ticks at each 0.5 seconds
public void run()
{
//code that changes state
changeState();
}
// this will be called by a external Thread at any moment
public void update(Move move)
{
//code that changes state
applyMove(move);
}
private void applyMove(Move move)
{
//state changes here
//state = ... doesn't matter
}
}
上面的 run 方法计划使用 Timer 或 ScheduledExecutorService 每 0.5 秒执行一次。
问题是 update
方法,随时都会被另一个线程调用。所以我问:
1 - 如果使用synchronized
来保护state
字段,会发生什么情况?计时器会等待吗?它将如何弥补“等待期”?
2 - 有更好的方法吗?也许将移动
存储在某个队列上?
谢谢!
最佳答案
Timer
和 ScheduledExecutorService
都可以按固定速率或在执行之间固定延迟执行任务。这意味着,具有固定速率的计划任务将补偿执行的运行时间(包括阻塞时间)。具有固定延迟的计划任务则不会。有关详细信息,请参阅以下方法的文档:
关于java - 将周期性任务与另一个线程同步,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18515729/
我已经完成了创建和启动计时器的手册页。 http://man7.org/linux/man-pages/man2/timerfd_create.2.html 但是,除了 arm(start) 和 di
我正在用 opengl 编写新的代码库,很早就遇到了一个奇怪的错误。这是帧速率的明显波动,具有重复性和可预测性。 我知道它肯定与渲染的对象成正比。它也与屏幕大小成正比(不是视口(viewport)大小
我知道如何使用计算数组中点之间的欧几里得距离 scipy.spatial.distance.cdist 类似于这个问题的答案: Calculate Distances Between One Poin
我想使用 CGAL 构造周期性 3D Delaunay 三角剖分和信息(在本例中为整数)。对于 2D,如果我构造一个 vector 对(点,信息)并将其传递给三角测量函数,则效果很好。然而,非常类似的
每隔几天,我们就会收到少量 MySql 超时错误,这些错误与我们的 MySQL RDS 实例上的 CPU 和数据库连接出现大量峰值相对应。这些查询通常非常快(<5 毫秒),但突然超时。 此时,数据库操
我是一名优秀的程序员,十分优秀!