- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个客户端应用程序,其中可运行对象必须在固定周期内运行。因此,我使用 java.util.concurrent.ScheduledExecutorService
如下:
ScheduledExecutorService scheduledExecutorService =
Executors.newScheduledThreadPool(10);
ScheduledFuture scheduledFuture =
scheduledExecutorService.scheduleAtFixedRate(runnableClass,
period,period,TimeUnit.SECONDS);
只要工作负载较低,任务就会在定义的时间段内调度,即如果客户端没有从服务器接收到消息。但是,如果服务器全速发出消息,则 runnableClass.run() 不会按时执行。我觉得执行之间的时间呈指数增长。但电脑仍然运行流畅。
所有异常
都会在run()
内捕获,如果我减少从服务器发送的消息,则任务会更频繁地调度。
为什么会发生这种情况?
编辑:该任务需要大量资源,并且它使用 Rserve
来获取在 R
中计算的预测。一项任务中可能最多有 5000 次对 R
的调用。
我对任务的时间做了一些测试。任务总是在一秒内完成,而周期则在 3 到 20 秒之间。
最佳答案
您正在运行多少个线程以及有多少个核心?是否会发生这样的情况:您从不同的线程处理每个请求,并且上下文切换使您的应用程序运行速度越来越慢?
请注意,受 CPU 限制的线程数不要多于内核数。(只是猜测,如有偏差,敬请谅解)
此外,您是否需要一个核心大小为 10 的调度线程池执行器? SingleThreadScheduledExecutor 不足以完成计划任务吗?
关于java.util.concurrent.ScheduledExecutorService 运行频率很低,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33209497/
我们有一个运行在具有 12 GB 内存和 16 个内核的 iis 7.5 x64 (w2k8) 上的 asp.net 4.0(集成模式)Web 应用程序,该应用程序存在排队请求峰值的问题。通常队列为零
view.showFPS = true --> 显示我的游戏有 30 fps。它非常慢,我的游戏需要更高的 fps(每秒帧数)。 为什么我的游戏帧率很低,我怎样才能提高它?我注释掉了大部分代码,它的帧
我是一名优秀的程序员,十分优秀!