Skip to content
项目
群组
代码片段
帮助
正在加载...
登录
切换导航
X
XXL-JOB
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
靳帅
XXL-JOB
Commits
29d926dc
Unverified
提交
29d926dc
authored
8月 11, 2020
作者:
许雪里
提交者:
GitHub
8月 11, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #1883 from jinyse/fix-ExecutorRouteRound
fix ExecutorRouteRound count++ concurrency problems, use AtomicIntege…
上级
ee1aecc6
15d8bcd5
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
12 行增加
和
5 行删除
+12
-5
ExecutorRouteRound.java
...xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
+12
-5
没有找到文件。
xxl-job-admin/src/main/java/com/xxl/job/admin/core/route/strategy/ExecutorRouteRound.java
浏览文件 @
29d926dc
...
@@ -8,14 +8,16 @@ import java.util.List;
...
@@ -8,14 +8,16 @@ import java.util.List;
import
java.util.Random
;
import
java.util.Random
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentHashMap
;
import
java.util.concurrent.ConcurrentMap
;
import
java.util.concurrent.ConcurrentMap
;
import
java.util.concurrent.atomic.AtomicInteger
;
/**
/**
* Created by xuxueli on 17/3/10.
* Created by xuxueli on 17/3/10.
*/
*/
public
class
ExecutorRouteRound
extends
ExecutorRouter
{
public
class
ExecutorRouteRound
extends
ExecutorRouter
{
private
static
ConcurrentMap
<
Integer
,
Integer
>
routeCountEachJob
=
new
ConcurrentHashMap
<
Integer
,
Integer
>();
private
static
ConcurrentMap
<
Integer
,
AtomicInteger
>
routeCountEachJob
=
new
ConcurrentHashMap
<
>();
private
static
long
CACHE_VALID_TIME
=
0
;
private
static
long
CACHE_VALID_TIME
=
0
;
private
static
int
count
(
int
jobId
)
{
private
static
int
count
(
int
jobId
)
{
// cache clear
// cache clear
if
(
System
.
currentTimeMillis
()
>
CACHE_VALID_TIME
)
{
if
(
System
.
currentTimeMillis
()
>
CACHE_VALID_TIME
)
{
...
@@ -23,11 +25,16 @@ public class ExecutorRouteRound extends ExecutorRouter {
...
@@ -23,11 +25,16 @@ public class ExecutorRouteRound extends ExecutorRouter {
CACHE_VALID_TIME
=
System
.
currentTimeMillis
()
+
1000
*
60
*
60
*
24
;
CACHE_VALID_TIME
=
System
.
currentTimeMillis
()
+
1000
*
60
*
60
*
24
;
}
}
// count++
AtomicInteger
count
=
routeCountEachJob
.
get
(
jobId
);
Integer
count
=
routeCountEachJob
.
get
(
jobId
);
// 初始化时主动Random一次,缓解首次压力
count
=
(
count
==
null
||
count
>
1000000
)?(
new
Random
().
nextInt
(
100
)):++
count
;
// 初始化时主动Random一次,缓解首次压力
if
(
count
==
null
||
count
.
get
()
>
1000000
)
{
count
=
new
AtomicInteger
(
new
Random
().
nextInt
(
100
));
}
else
{
// count++
count
.
addAndGet
(
1
);
}
routeCountEachJob
.
put
(
jobId
,
count
);
routeCountEachJob
.
put
(
jobId
,
count
);
return
count
;
return
count
.
get
()
;
}
}
@Override
@Override
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论