mirror of
https://gitee.com/dromara/hutool.git
synced 2025-05-04 04:37:59 +08:00
fix bg
This commit is contained in:
parent
569877e0ef
commit
f9a3cf7b23
@ -18,6 +18,7 @@
|
||||
* 【poi 】 修复ExcelWriter.getDisposition方法生成错误(issue#2239@Github)
|
||||
* 【core 】 修复UrlBuilder重复编码的问题(issue#2243@Github)
|
||||
* 【http 】 修复HttpRequest中urlQuery,处理get请求参数的时候会导致空指针异常(pr#2248@Github)
|
||||
* 【core 】 修复SimpleCache在get时未使用读锁可能导致的问题
|
||||
|
||||
-------------------------------------------------------------------------------------------------------------
|
||||
|
||||
|
@ -97,7 +97,7 @@ public class SimpleCache<K, V> implements Iterable<Map.Entry<K, V>>, Serializabl
|
||||
keyLock.lock();
|
||||
try {
|
||||
// 双重检查,防止在竞争锁的过程中已经有其它线程写入
|
||||
v = cache.get(key);
|
||||
v = get(key);
|
||||
if (null == v || (null != validPredicate && false == validPredicate.test(v))) {
|
||||
try {
|
||||
v = supplier.call();
|
||||
|
@ -44,9 +44,9 @@ public class ReferenceUtil {
|
||||
public static <T> Reference<T> create(ReferenceType type, T referent, ReferenceQueue<T> queue) {
|
||||
switch (type) {
|
||||
case SOFT:
|
||||
return new SoftReference<>(referent);
|
||||
return new SoftReference<>(referent, queue);
|
||||
case WEAK:
|
||||
return new WeakReference<>(referent);
|
||||
return new WeakReference<>(referent, queue);
|
||||
case PHANTOM:
|
||||
return new PhantomReference<>(referent, queue);
|
||||
default:
|
||||
|
34
hutool-core/src/test/java/cn/hutool/core/util/ReferenceUtilTest.java
Executable file
34
hutool-core/src/test/java/cn/hutool/core/util/ReferenceUtilTest.java
Executable file
@ -0,0 +1,34 @@
|
||||
package cn.hutool.core.util;
|
||||
|
||||
import org.junit.Assert;
|
||||
import org.junit.Test;
|
||||
|
||||
import java.lang.ref.PhantomReference;
|
||||
import java.lang.ref.Reference;
|
||||
import java.lang.ref.SoftReference;
|
||||
import java.lang.ref.WeakReference;
|
||||
|
||||
public class ReferenceUtilTest {
|
||||
|
||||
@Test
|
||||
public void createWeakTest(){
|
||||
final Reference<Integer> integerReference = ReferenceUtil.create(ReferenceUtil.ReferenceType.WEAK, 1);
|
||||
Assert.assertTrue(integerReference instanceof WeakReference);
|
||||
Assert.assertEquals(new Integer(1), integerReference.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createSoftTest(){
|
||||
final Reference<Integer> integerReference = ReferenceUtil.create(ReferenceUtil.ReferenceType.SOFT, 1);
|
||||
Assert.assertTrue(integerReference instanceof SoftReference);
|
||||
Assert.assertEquals(new Integer(1), integerReference.get());
|
||||
}
|
||||
|
||||
@Test
|
||||
public void createPhantomTest(){
|
||||
final Reference<Integer> integerReference = ReferenceUtil.create(ReferenceUtil.ReferenceType.PHANTOM, 1);
|
||||
Assert.assertTrue(integerReference instanceof PhantomReference);
|
||||
// get方法永远都返回null,PhantomReference只能用来监控对象的GC状况
|
||||
Assert.assertNull(integerReference.get());
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user