This is an automated email from the ASF dual-hosted git repository.
liubao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/servicecomb-java-chassis.git
The following commit(s) were added to refs/heads/master by this push:
new fe7ce5b [#1467]use ThreadLocalRandom instead of Random
fe7ce5b is described below
commit fe7ce5b9be3ac030ec9d4896f7a03ab67f6de22b
Author: liubao <[email protected]>
AuthorDate: Mon Feb 3 10:44:29 2020 +0800
[#1467]use ThreadLocalRandom instead of Random
---
.../java/org/apache/servicecomb/loadbalance/RandomRuleExt.java | 6 ++----
.../servicecomb/loadbalance/WeightedResponseTimeRuleExt.java | 8 +++-----
2 files changed, 5 insertions(+), 9 deletions(-)
diff --git
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/RandomRuleExt.java
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/RandomRuleExt.java
index 6671d81..5f8d26c 100644
---
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/RandomRuleExt.java
+++
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/RandomRuleExt.java
@@ -18,7 +18,7 @@
package org.apache.servicecomb.loadbalance;
import java.util.List;
-import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
import org.apache.servicecomb.core.Invocation;
@@ -26,14 +26,12 @@ import org.apache.servicecomb.core.Invocation;
* A random rule.
*/
public class RandomRuleExt implements RuleExt {
- private Random random = new Random();
-
@Override
public ServiceCombServer choose(List<ServiceCombServer> servers, Invocation
invocation) {
if (servers.isEmpty()) {
return null;
}
- int index = Math.abs(random.nextInt()) % servers.size();
+ int index = Math.abs(ThreadLocalRandom.current().nextInt()) %
servers.size();
return servers.get(index);
}
}
diff --git
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java
index 529c0a3..055f75b 100644
---
a/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java
+++
b/handlers/handler-loadbalance/src/main/java/org/apache/servicecomb/loadbalance/WeightedResponseTimeRuleExt.java
@@ -19,7 +19,7 @@ package org.apache.servicecomb.loadbalance;
import java.util.ArrayList;
import java.util.List;
-import java.util.Random;
+import java.util.concurrent.ThreadLocalRandom;
import org.apache.servicecomb.core.Invocation;
@@ -34,8 +34,6 @@ public class WeightedResponseTimeRuleExt extends
RoundRobinRuleExt {
private static final int RANDOM_PERCENT = 10;
- private Random random = new Random();
-
private LoadBalancer loadBalancer;
private double totalWeightsCache = 0d;
@@ -55,7 +53,7 @@ public class WeightedResponseTimeRuleExt extends
RoundRobinRuleExt {
for (int i = 0; i < stats.size() - 1; i++) {
weights.add(finalTotal - stats.get(i));
}
- double ran = random.nextDouble() * finalTotal * (servers.size() - 1);
+ double ran = ThreadLocalRandom.current().nextDouble() * finalTotal *
(servers.size() - 1);
for (int i = 0; i < weights.size(); i++) {
ran -= weights.get(i);
if (ran < 0) {
@@ -72,7 +70,7 @@ public class WeightedResponseTimeRuleExt extends
RoundRobinRuleExt {
return doCalculateTotalWeights(servers);
}
// 10% possibilities to use weighed response rule when the normal access
is very fast.
- if (random.nextInt(RANDOM_PERCENT) == 0) {
+ if (ThreadLocalRandom.current().nextInt(RANDOM_PERCENT) == 0) {
return doCalculateTotalWeights(servers);
} else {
return new ArrayList<>();