修改随机数获取实现为ThreadLocalRandom,减少对象反复创建的开销,同时减少线程争用

This commit is contained in:
h0ss 2022-09-19 12:39:52 +08:00
parent 286f8700ef
commit 8488bf8430

View File

@ -10,7 +10,7 @@ import java.util.Collections;
import java.util.Date; import java.util.Date;
import java.util.Iterator; import java.util.Iterator;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.concurrent.ThreadLocalRandom;
import java.util.regex.Pattern; import java.util.regex.Pattern;
import cn.dev33.satoken.exception.SaTokenException; import cn.dev33.satoken.exception.SaTokenException;
@ -22,6 +22,10 @@ import cn.dev33.satoken.exception.SaTokenException;
* *
*/ */
public class SaFoxUtil { public class SaFoxUtil {
/**
* 可以减少线程争用的随机对象
*/
private static final ThreadLocalRandom random = ThreadLocalRandom.current();
private SaFoxUtil() { private SaFoxUtil() {
} }
@ -52,7 +56,6 @@ public class SaFoxUtil {
*/ */
public static String getRandomString(int length) { public static String getRandomString(int length) {
String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"; String str = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
Random random = new Random();
StringBuffer sb = new StringBuffer(); StringBuffer sb = new StringBuffer();
for (int i = 0; i < length; i++) { for (int i = 0; i < length; i++) {
int number = random.nextInt(62); int number = random.nextInt(62);
@ -95,7 +98,7 @@ public class SaFoxUtil {
* @return 随机字符串 * @return 随机字符串
*/ */
public static String getMarking28() { public static String getMarking28() {
return System.currentTimeMillis() + "" + new Random().nextInt(Integer.MAX_VALUE); return System.currentTimeMillis() + "" + random.nextInt(Integer.MAX_VALUE);
} }
/** /**