Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_jdk
提交
42643327
D
dragonwell8_jdk
项目概览
openanolis
/
dragonwell8_jdk
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_jdk
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
42643327
编写于
4月 16, 2013
作者:
C
chegar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8012237: CompletableFuture/Basic.java still fails intermittently
Reviewed-by: martin
上级
a0ce2c19
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
76 addition
and
5 deletion
+76
-5
test/java/util/concurrent/CompletableFuture/Basic.java
test/java/util/concurrent/CompletableFuture/Basic.java
+76
-5
未找到文件。
test/java/util/concurrent/CompletableFuture/Basic.java
浏览文件 @
42643327
...
...
@@ -504,7 +504,7 @@ public class Basic {
cf1
=
supplyAsync
(()
->
{
throw
new
RuntimeException
();
});
cf2
=
supplyAsync
(()
->
2
);
cf3
=
cf1
.
applyToEither
(
cf2
,
(
x
)
->
{
check
(
x
==
2
);
return
x
;
});
try
{
check
(
cf3
.
join
()
==
1
);
}
catch
(
CompletionException
x
)
{
pass
();
}
try
{
check
(
cf3
.
join
()
==
2
);
}
catch
(
CompletionException
x
)
{
pass
();
}
check
(
cf3
.
isDone
());
check
(
cf1
.
isDone
()
||
cf2
.
isDone
());
...
...
@@ -520,6 +520,27 @@ public class Basic {
cf3
=
cf1
.
applyToEitherAsync
(
cf2
,
(
x
)
->
{
fail
();
return
x
;
});
checkCompletedExceptionally
(
cf3
);
check
(
cf1
.
isDone
()
||
cf2
.
isDone
());
final
Phaser
cf3Done
=
new
Phaser
(
2
);
cf1
=
supplyAsync
(()
->
{
cf3Done
.
arriveAndAwaitAdvance
();
return
1
;
});
cf2
=
supplyAsync
(()
->
2
);
cf3
=
cf1
.
applyToEither
(
cf2
,
(
x
)
->
{
check
(
x
==
2
);
return
x
;
});
checkCompletedNormally
(
cf3
,
2
);
checkCompletedNormally
(
cf2
,
2
);
check
(!
cf1
.
isDone
());
cf3Done
.
arrive
();
checkCompletedNormally
(
cf1
,
1
);
checkCompletedNormally
(
cf3
,
2
);
cf1
=
supplyAsync
(()
->
1
);
cf2
=
supplyAsync
(()
->
{
cf3Done
.
arriveAndAwaitAdvance
();
return
2
;
});
cf3
=
cf1
.
applyToEitherAsync
(
cf2
,
(
x
)
->
{
check
(
x
==
1
);
return
x
;
});
checkCompletedNormally
(
cf3
,
1
);
checkCompletedNormally
(
cf1
,
1
);
check
(!
cf2
.
isDone
());
cf3Done
.
arrive
();
checkCompletedNormally
(
cf2
,
2
);
checkCompletedNormally
(
cf3
,
1
);
}
catch
(
Throwable
t
)
{
unexpected
(
t
);
}
//----------------------------------------------------------------
...
...
@@ -570,6 +591,27 @@ public class Basic {
cf3
=
cf2
.
acceptEitherAsync
(
cf1
,
(
x
)
->
{
fail
();
});
checkCompletedExceptionally
(
cf3
);
check
(
cf1
.
isDone
()
||
cf2
.
isDone
());
final
Phaser
cf3Done
=
new
Phaser
(
2
);
cf1
=
supplyAsync
(()
->
{
cf3Done
.
arriveAndAwaitAdvance
();
return
1
;
});
cf2
=
supplyAsync
(()
->
2
);
cf3
=
cf1
.
acceptEither
(
cf2
,
(
x
)
->
{
check
(
x
==
2
);
});
checkCompletedNormally
(
cf3
,
null
);
checkCompletedNormally
(
cf2
,
2
);
check
(!
cf1
.
isDone
());
cf3Done
.
arrive
();
checkCompletedNormally
(
cf1
,
1
);
checkCompletedNormally
(
cf3
,
null
);
cf1
=
supplyAsync
(()
->
1
);
cf2
=
supplyAsync
(()
->
{
cf3Done
.
arriveAndAwaitAdvance
();
return
2
;
});
cf3
=
cf1
.
acceptEitherAsync
(
cf2
,
(
x
)
->
{
check
(
x
==
1
);
});
checkCompletedNormally
(
cf3
,
null
);
checkCompletedNormally
(
cf1
,
1
);
check
(!
cf2
.
isDone
());
cf3Done
.
arrive
();
checkCompletedNormally
(
cf2
,
2
);
checkCompletedNormally
(
cf3
,
null
);
}
catch
(
Throwable
t
)
{
unexpected
(
t
);
}
//----------------------------------------------------------------
...
...
@@ -605,19 +647,23 @@ public class Basic {
cf1
=
runAsync
(()
->
{
throw
new
RuntimeException
();
});
cf2
=
runAsync
(()
->
{
});
cf3
=
cf2
.
runAfterEither
(
cf1
,
()
->
{
atomicInt
.
incrementAndGet
();
});
try
{
check
(
cf3
.
join
()
==
null
);
}
catch
(
CompletionException
x
)
{
pass
();
}
try
{
check
(
cf3
.
join
()
==
null
);
check
(
atomicInt
.
get
()
==
(
before
+
1
));
}
catch
(
CompletionException
x
)
{
pass
();
}
check
(
cf3
.
isDone
());
check
(
cf1
.
isDone
()
||
cf2
.
isDone
());
check
(
atomicInt
.
get
()
==
(
before
+
1
));
before
=
atomicInt
.
get
();
cf1
=
runAsync
(()
->
{
});
cf2
=
runAsync
(()
->
{
throw
new
RuntimeException
();
});
cf3
=
cf1
.
runAfterEitherAsync
(
cf2
,
()
->
{
atomicInt
.
incrementAndGet
();
});
try
{
check
(
cf3
.
join
()
==
null
);
}
catch
(
CompletionException
x
)
{
pass
();
}
try
{
check
(
cf3
.
join
()
==
null
);
check
(
atomicInt
.
get
()
==
(
before
+
1
));
}
catch
(
CompletionException
x
)
{
pass
();
}
check
(
cf3
.
isDone
());
check
(
cf1
.
isDone
()
||
cf2
.
isDone
());
check
(
atomicInt
.
get
()
==
(
before
+
1
));
before
=
atomicInt
.
get
();
cf1
=
runAsync
(()
->
{
throw
new
RuntimeException
();
});
...
...
@@ -626,6 +672,31 @@ public class Basic {
checkCompletedExceptionally
(
cf3
);
check
(
cf1
.
isDone
()
||
cf2
.
isDone
());
check
(
atomicInt
.
get
()
==
before
);
final
Phaser
cf3Done
=
new
Phaser
(
2
);
before
=
atomicInt
.
get
();
cf1
=
runAsync
(()
->
{
cf3Done
.
arriveAndAwaitAdvance
();
});
cf2
=
runAsync
(()
->
{
});
cf3
=
cf1
.
runAfterEither
(
cf2
,
()
->
{
atomicInt
.
incrementAndGet
();
});
checkCompletedNormally
(
cf3
,
null
);
checkCompletedNormally
(
cf2
,
null
);
check
(!
cf1
.
isDone
());
check
(
atomicInt
.
get
()
==
(
before
+
1
));
cf3Done
.
arrive
();
checkCompletedNormally
(
cf1
,
null
);
checkCompletedNormally
(
cf3
,
null
);
before
=
atomicInt
.
get
();
cf1
=
runAsync
(()
->
{
});
cf2
=
runAsync
(()
->
{
cf3Done
.
arriveAndAwaitAdvance
();
});
cf3
=
cf1
.
runAfterEitherAsync
(
cf2
,
()
->
{
atomicInt
.
incrementAndGet
();
});
checkCompletedNormally
(
cf3
,
null
);
checkCompletedNormally
(
cf1
,
null
);
check
(!
cf2
.
isDone
());
check
(
atomicInt
.
get
()
==
(
before
+
1
));
cf3Done
.
arrive
();
checkCompletedNormally
(
cf2
,
null
);
checkCompletedNormally
(
cf3
,
null
);
}
catch
(
Throwable
t
)
{
unexpected
(
t
);
}
//----------------------------------------------------------------
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录