java - ScheduledExecutorService 性能

标签 java performance scheduledexecutorservice

我有一个最大大小为 5000 的对象列表。当一个对象在特定类型的时间内(如 5、10 或 100 秒)没有更新时,它将从列表中删除。

处理这种情况的最佳或首选方案是什么?

  • 为每个对象更新使用计划任务。取消旧的并重置新的。

  • 或者使用一个固定延迟的计划任务,比如 500 毫秒。通过时间比较检查旧对象...

  • 或其他。

你有什么建议?

最佳答案

如果可以使用Google's Guava , 你应该给 Cache上课试试。

例如,您可以为每种类型的对象设置一个缓存:

LoadingCache<String, ObjectOfType1> type1Cache = CacheBuilder.newBuilder()
   .maximumSize(5000)
   .expireAfterWrite(5, TimeUnit.SECONDS)
   .removalListener(MY_LISTENER)
   .build(
       new CacheLoader<String, ObjectOfType1>() {
         public Graph load(String key) throws AnyException {
           return createExpensiveGraph(key);
         }
       });

对于 Type2:

LoadingCache<String, ObjectOfType2> type2Cache = CacheBuilder.newBuilder()
   .maximumSize(5000)
   .expireAfterWrite(10, TimeUnit.SECONDS)
   .removalListener(MY_LISTENER)
   .build(
       new CacheLoader<String, ObjectOfType2>() {
         public Graph load(String key) throws AnyException {
           return createExpensiveGraph(key);
         }
       });

然后,您可以像使用 Map 一样使用缓存:

ObjectOfType1 o1 = type1Cache.get("1");
ObjectOfType2 o2 = type2Cache.get("2");

关于java - ScheduledExecutorService 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32054908/

相关文章:

java - iPhone iOS7 上的 MGWT 滚动错误无法到达可滚动内容的底部

java - 如何从请求上下文中获取 url 匹配模板

c++ - 虚函数性能: one large class vs many smaller subclasses

java - ScheduledExecutorService 的使用和流内锁定套接字的清理

java - Scheduled Executor Service 只运行一次,没有抛出异常

java.util.Timer 毫无异常地停止

java - Graphics.Path.Direction - Java 枚举方向问题 - 无法使用 EAST

java - android anonymous asyncTask - 它会导致内存泄漏吗

performance - redis (StackExchange.Redis) 发布性能差?

css - 什么对性能更好?几张图片的大小调整到他们的空间,还是只有一张?