com.google.common.cache.LocalCache.get()方法的使用及代码示例

x33g5p2x  于2022-01-24 转载在 其他  
字(10.7k)|赞(0)|评价(0)|浏览(187)

本文整理了Java中com.google.common.cache.LocalCache.get()方法的一些代码示例,展示了LocalCache.get()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。LocalCache.get()方法的具体详情如下:
包路径:com.google.common.cache.LocalCache
类名称:LocalCache
方法名:get

LocalCache.get介绍

[英]Returns the internal entry for the specified key. The entry may be loading, expired, or partially collected.
[中]返回指定键的内部项。条目可能正在加载、已过期或已部分收集。

代码示例

代码示例来源:origin: google/guava

V getOrLoad(K key) throws ExecutionException {
 return get(key, defaultLoader);
}

代码示例来源:origin: google/guava

@Override
public V get(K key, final Callable<? extends V> valueLoader) throws ExecutionException {
 checkNotNull(valueLoader);
 return localCache.get(
   key,
   new CacheLoader<Object, V>() {
    @Override
    public V load(Object key) throws Exception {
     return valueLoader.call();
    }
   });
}

代码示例来源:origin: google/j2objc

@Override
public V get(K key, final Callable<? extends V> valueLoader) throws ExecutionException {
 checkNotNull(valueLoader);
 return localCache.get(
   key,
   new CacheLoader<Object, V>() {
    @Override
    public V load(Object key) throws Exception {
     return valueLoader.call();
    }
   });
}

代码示例来源:origin: google/guava

boolean removeIf(BiPredicate<? super K, ? super V> filter) {
 checkNotNull(filter);
 boolean changed = false;
 for (K key : keySet()) {
  while (true) {
   V value = get(key);
   if (value == null || !filter.test(key, value)) {
    break;
   } else if (LocalCache.this.remove(key, value)) {
    changed = true;
    break;
   }
  }
 }
 return changed;
}

代码示例来源:origin: google/guava

@Override
 public void run() {
  try {
   map.get(one, loader);
  } catch (ExecutionException e) {
   throw new RuntimeException(e);
  }
  doneSignal.countDown();
 }
}.start();

代码示例来源:origin: google/guava

@Override
 public void run() {
  try {
   map.get(one, loader);
  } catch (ExecutionException e) {
   throw new RuntimeException(e);
  }
  doneSignal.countDown();
 }
}.start();

代码示例来源:origin: google/guava

@Override
 public void run() {
  try {
   map.get(one, loader);
  } catch (ExecutionException e) {
   throw new RuntimeException(e);
  }
  doneSignal.countDown();
 }
}.start();

代码示例来源:origin: google/guava

ImmutableMap<K, V> getAllPresent(Iterable<?> keys) {
 int hits = 0;
 int misses = 0;
 Map<K, V> result = Maps.newLinkedHashMap();
 for (Object key : keys) {
  V value = get(key);
  if (value == null) {
   misses++;
  } else {
   // TODO(fry): store entry key instead of query key
   @SuppressWarnings("unchecked")
   K castKey = (K) key;
   result.put(castKey, value);
   hits++;
  }
 }
 globalStatsCounter.recordHits(hits);
 globalStatsCounter.recordMisses(misses);
 return ImmutableMap.copyOf(result);
}

代码示例来源:origin: google/guava

public @Nullable V getOrDefault(@Nullable Object key, @Nullable V defaultValue) {
 V result = get(key);
 return (result != null) ? result : defaultValue;
}

代码示例来源:origin: google/guava

static void checkValidState(LocalCache<?, ?> cchm) {
 for (Segment<?, ?> segment : cchm.segments) {
  segment.cleanUp();
  assertFalse(segment.isLocked());
  Map<?, ?> table = segmentTable(segment);
  // cleanup and then check count after we have a strong reference to all entries
  segment.cleanUp();
  // under high memory pressure keys/values may be nulled out but not yet enqueued
  assertThat(table.size()).isAtMost(segment.count);
  for (Entry<?, ?> entry : table.entrySet()) {
   assertNotNull(entry.getKey());
   assertNotNull(entry.getValue());
   assertSame(entry.getValue(), cchm.get(entry.getKey()));
  }
 }
 checkEviction(cchm);
 checkExpiration(cchm);
}

代码示例来源:origin: google/guava

public void testDrainRecencyQueueOnWrite() {
 for (CacheBuilder<Object, Object> builder : allEvictingMakers()) {
  LocalCache<Object, Object> map = makeLocalCache(builder.concurrencyLevel(1));
  Segment<Object, Object> segment = map.segments[0];
  if (segment.recencyQueue != DISCARDING_QUEUE) {
   Object keyOne = new Object();
   Object valueOne = new Object();
   Object keyTwo = new Object();
   Object valueTwo = new Object();
   map.put(keyOne, valueOne);
   assertTrue(segment.recencyQueue.isEmpty());
   for (int i = 0; i < DRAIN_THRESHOLD / 2; i++) {
    map.get(keyOne);
   }
   assertFalse(segment.recencyQueue.isEmpty());
   map.put(keyTwo, valueTwo);
   assertTrue(segment.recencyQueue.isEmpty());
  }
 }
}

代码示例来源:origin: google/guava

public void testCompute() throws ExecutionException {
 CountingLoader loader = new CountingLoader();
 LocalCache<Object, Object> map = makeLocalCache(createCacheBuilder());
 assertEquals(0, loader.getCount());
 Object key = new Object();
 Object value = map.get(key, loader);
 assertEquals(1, loader.getCount());
 assertEquals(value, map.get(key, loader));
 assertEquals(1, loader.getCount());
}

代码示例来源:origin: google/guava

@AndroidIncompatible // Perhaps emulator clock does not update between the two get() calls?
public void testComputeExpiredEntry() throws ExecutionException {
 CacheBuilder<Object, Object> builder =
   createCacheBuilder().expireAfterWrite(1, TimeUnit.NANOSECONDS);
 CountingLoader loader = new CountingLoader();
 LocalCache<Object, Object> map = makeLocalCache(builder);
 assertEquals(0, loader.getCount());
 Object key = new Object();
 Object one = map.get(key, loader);
 assertEquals(1, loader.getCount());
 Object two = map.get(key, loader);
 assertNotSame(one, two);
 assertEquals(2, loader.getCount());
}

代码示例来源:origin: google/guava

public void testComputeExistingEntry() throws ExecutionException {
 CountingLoader loader = new CountingLoader();
 LocalCache<Object, Object> map = makeLocalCache(createCacheBuilder());
 assertEquals(0, loader.getCount());
 Object key = new Object();
 Object value = new Object();
 map.put(key, value);
 assertEquals(value, map.get(key, loader));
 assertEquals(0, loader.getCount());
}

代码示例来源:origin: google/guava

public void testDrainKeyReferenceQueueOnRead() {
 for (CacheBuilder<Object, Object> builder : allKeyValueStrengthMakers()) {
  LocalCache<Object, Object> map = makeLocalCache(builder.concurrencyLevel(1));
  if (map.usesKeyReferences()) {
   Segment<Object, Object> segment = map.segments[0];
   Object keyOne = new Object();
   int hashOne = map.hash(keyOne);
   Object valueOne = new Object();
   Object keyTwo = new Object();
   map.put(keyOne, valueOne);
   ReferenceEntry<Object, Object> entry = segment.getEntry(keyOne, hashOne);
   @SuppressWarnings("unchecked")
   Reference<Object> reference = (Reference) entry;
   reference.enqueue();
   for (int i = 0; i < SMALL_MAX_SIZE; i++) {
    map.get(keyTwo);
   }
   assertFalse(map.containsKey(keyOne));
   assertFalse(map.containsValue(valueOne));
   assertNull(map.get(keyOne));
   assertEquals(0, map.size());
   assertNull(segment.keyReferenceQueue.poll());
  }
 }
}

代码示例来源:origin: google/guava

public void testDrainValueReferenceQueueOnRead() {
 for (CacheBuilder<Object, Object> builder : allKeyValueStrengthMakers()) {
  LocalCache<Object, Object> map = makeLocalCache(builder.concurrencyLevel(1));
  if (map.usesValueReferences()) {
   Segment<Object, Object> segment = map.segments[0];
   Object keyOne = new Object();
   int hashOne = map.hash(keyOne);
   Object valueOne = new Object();
   Object keyTwo = new Object();
   map.put(keyOne, valueOne);
   ReferenceEntry<Object, Object> entry = segment.getEntry(keyOne, hashOne);
   ValueReference<Object, Object> valueReference = entry.getValueReference();
   @SuppressWarnings("unchecked")
   Reference<Object> reference = (Reference) valueReference;
   reference.enqueue();
   for (int i = 0; i < SMALL_MAX_SIZE; i++) {
    map.get(keyTwo);
   }
   assertFalse(map.containsKey(keyOne));
   assertFalse(map.containsValue(valueOne));
   assertNull(map.get(keyOne));
   assertEquals(0, map.size());
   assertNull(segment.valueReferenceQueue.poll());
  }
 }
}

代码示例来源:origin: google/guava

public void testDrainKeyReferenceQueueOnWrite() {
 for (CacheBuilder<Object, Object> builder : allKeyValueStrengthMakers()) {
  LocalCache<Object, Object> map = makeLocalCache(builder.concurrencyLevel(1));
  if (map.usesKeyReferences()) {
   Segment<Object, Object> segment = map.segments[0];
   Object keyOne = new Object();
   int hashOne = map.hash(keyOne);
   Object valueOne = new Object();
   Object keyTwo = new Object();
   Object valueTwo = new Object();
   map.put(keyOne, valueOne);
   ReferenceEntry<Object, Object> entry = segment.getEntry(keyOne, hashOne);
   @SuppressWarnings("unchecked")
   Reference<Object> reference = (Reference) entry;
   reference.enqueue();
   map.put(keyTwo, valueTwo);
   assertFalse(map.containsKey(keyOne));
   assertFalse(map.containsValue(valueOne));
   assertNull(map.get(keyOne));
   assertEquals(1, map.size());
   assertNull(segment.keyReferenceQueue.poll());
  }
 }
}

代码示例来源:origin: google/guava

public void testDrainValueReferenceQueueOnWrite() {
 for (CacheBuilder<Object, Object> builder : allKeyValueStrengthMakers()) {
  LocalCache<Object, Object> map = makeLocalCache(builder.concurrencyLevel(1));
  if (map.usesValueReferences()) {
   Segment<Object, Object> segment = map.segments[0];
   Object keyOne = new Object();
   int hashOne = map.hash(keyOne);
   Object valueOne = new Object();
   Object keyTwo = new Object();
   Object valueTwo = new Object();
   map.put(keyOne, valueOne);
   ReferenceEntry<Object, Object> entry = segment.getEntry(keyOne, hashOne);
   ValueReference<Object, Object> valueReference = entry.getValueReference();
   @SuppressWarnings("unchecked")
   Reference<Object> reference = (Reference) valueReference;
   reference.enqueue();
   map.put(keyTwo, valueTwo);
   assertFalse(map.containsKey(keyOne));
   assertFalse(map.containsValue(valueOne));
   assertNull(map.get(keyOne));
   assertEquals(1, map.size());
   assertNull(segment.valueReferenceQueue.poll());
  }
 }
}

代码示例来源:origin: google/guava

public void testComputePartiallyCollectedKey() throws ExecutionException {
 CacheBuilder<Object, Object> builder = createCacheBuilder().concurrencyLevel(1);
 CountingLoader loader = new CountingLoader();
 LocalCache<Object, Object> map = makeLocalCache(builder);
 Segment<Object, Object> segment = map.segments[0];
 AtomicReferenceArray<ReferenceEntry<Object, Object>> table = segment.table;
 assertEquals(0, loader.getCount());
 Object key = new Object();
 int hash = map.hash(key);
 Object value = new Object();
 int index = hash & (table.length() - 1);
 DummyEntry<Object, Object> entry = DummyEntry.create(key, hash, null);
 DummyValueReference<Object, Object> valueRef = DummyValueReference.create(value);
 entry.setValueReference(valueRef);
 table.set(index, entry);
 segment.count++;
 assertSame(value, map.get(key, loader));
 assertEquals(0, loader.getCount());
 assertEquals(1, segment.count);
 entry.clearKey();
 assertNotSame(value, map.get(key, loader));
 assertEquals(1, loader.getCount());
 assertEquals(2, segment.count);
}

代码示例来源:origin: google/guava

public void testComputePartiallyCollectedValue() throws ExecutionException {
 CacheBuilder<Object, Object> builder = createCacheBuilder().concurrencyLevel(1);
 CountingLoader loader = new CountingLoader();
 LocalCache<Object, Object> map = makeLocalCache(builder);
 Segment<Object, Object> segment = map.segments[0];
 AtomicReferenceArray<ReferenceEntry<Object, Object>> table = segment.table;
 assertEquals(0, loader.getCount());
 Object key = new Object();
 int hash = map.hash(key);
 Object value = new Object();
 int index = hash & (table.length() - 1);
 DummyEntry<Object, Object> entry = DummyEntry.create(key, hash, null);
 DummyValueReference<Object, Object> valueRef = DummyValueReference.create(value);
 entry.setValueReference(valueRef);
 table.set(index, entry);
 segment.count++;
 assertSame(value, map.get(key, loader));
 assertEquals(0, loader.getCount());
 assertEquals(1, segment.count);
 valueRef.clear();
 assertNotSame(value, map.get(key, loader));
 assertEquals(1, loader.getCount());
 assertEquals(1, segment.count);
}

相关文章

微信公众号

最新文章

更多