Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell11
提交
48e00273
D
dragonwell11
项目概览
openanolis
/
dragonwell11
通知
7
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
48e00273
编写于
8月 06, 2008
作者:
S
swamyv
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
6732441: TEST_BUG: ThreadMXBeanProxy test fails intermittently.
Summary: Fixed the race condition in the test. Reviewed-by: jjh
上级
86a665b0
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
13 addition
and
9 deletion
+13
-9
jdk/test/java/lang/management/ManagementFactory/ThreadMXBeanProxy.java
.../lang/management/ManagementFactory/ThreadMXBeanProxy.java
+13
-9
未找到文件。
jdk/test/java/lang/management/ManagementFactory/ThreadMXBeanProxy.java
浏览文件 @
48e00273
...
...
@@ -60,8 +60,8 @@ public class ThreadMXBeanProxy {
thread
.
setDaemon
(
true
);
thread
.
start
();
// wait until myThread acquires mutex
while
(!
mutex
.
isLocked
(
))
{
// wait until myThread acquires mutex
and lock owner is set.
while
(!
(
mutex
.
isLocked
()
&&
mutex
.
getLockOwner
()
==
thread
))
{
try
{
Thread
.
sleep
(
100
);
}
catch
(
InterruptedException
e
)
{
...
...
@@ -73,17 +73,17 @@ public class ThreadMXBeanProxy {
// validate the local access
ThreadInfo
[]
infos
=
getThreadMXBean
().
getThreadInfo
(
ids
,
true
,
true
);
if
(
i
d
s
.
length
!=
1
)
{
if
(
i
nfo
s
.
length
!=
1
)
{
throw
new
RuntimeException
(
"Returned ThreadInfo[] of length="
+
i
d
s
.
length
+
". Expected to be 1."
);
i
nfo
s
.
length
+
". Expected to be 1."
);
}
thread
.
checkThreadInfo
(
infos
[
0
]);
// validate the remote access
infos
=
mbean
.
getThreadInfo
(
ids
,
true
,
true
);
if
(
i
d
s
.
length
!=
1
)
{
if
(
i
nfo
s
.
length
!=
1
)
{
throw
new
RuntimeException
(
"Returned ThreadInfo[] of length="
+
i
d
s
.
length
+
". Expected to be 1."
);
i
nfo
s
.
length
+
". Expected to be 1."
);
}
thread
.
checkThreadInfo
(
infos
[
0
]);
...
...
@@ -160,8 +160,7 @@ public class ThreadMXBeanProxy {
LockInfo
[]
syncs
=
info
.
getLockedSynchronizers
();
if
(
syncs
.
length
!=
OWNED_SYNCS
)
{
throw
new
RuntimeException
(
"Number of locked syncs = "
+
syncs
.
length
+
" not matched. Expected: "
+
OWNED_SYNCS
);
syncs
.
length
+
" not matched. Expected: "
+
OWNED_SYNCS
);
}
AbstractOwnableSynchronizer
s
=
mutex
.
getSync
();
String
lockName
=
s
.
getClass
().
getName
();
...
...
@@ -174,7 +173,6 @@ public class ThreadMXBeanProxy {
throw
new
RuntimeException
(
"LockInfo: "
+
syncs
[
0
]
+
" IdentityHashCode not matched. Expected: "
+
hcode
);
}
}
}
static
class
Mutex
implements
Lock
,
java
.
io
.
Serializable
{
...
...
@@ -214,6 +212,10 @@ public class ThreadMXBeanProxy {
s
.
defaultReadObject
();
setState
(
0
);
// reset to unlocked state
}
protected
Thread
getLockOwner
()
{
return
getExclusiveOwnerThread
();
}
}
// The sync object does all the hard work. We just forward to it.
...
...
@@ -232,6 +234,8 @@ public class ThreadMXBeanProxy {
return
sync
.
tryAcquireNanos
(
1
,
unit
.
toNanos
(
timeout
));
}
public
Thread
getLockOwner
()
{
return
sync
.
getLockOwner
();
}
public
AbstractOwnableSynchronizer
getSync
()
{
return
sync
;
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录