< prev index next > test/jdk/jdk/internal/misc/ThreadFlock/WithScopedValue.java
Print this page
*/
/*
* @test
* @summary Test ThreadFlock with scoped values
+ * @enablePreview
* @modules java.base/jdk.internal.misc
- * @modules jdk.incubator.concurrent
* @run junit WithScopedValue
*/
import jdk.internal.misc.ThreadFlock;
- import jdk.incubator.concurrent.ScopedValue;
- import jdk.incubator.concurrent.StructureViolationException;
import java.util.concurrent.ThreadFactory;
+ import java.util.concurrent.StructureViolationException;
import java.util.concurrent.atomic.AtomicReference;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.params.ParameterizedTest;
*/
@ParameterizedTest
@MethodSource("factories")
void testInheritsScopedValue(ThreadFactory factory) throws Exception {
ScopedValue<String> name = ScopedValue.newInstance();
- String value = ScopedValue.where(name, "duke", () -> {
+ String value = ScopedValue.callWhere(name, "duke", () -> {
var result = new AtomicReference<String>();
try (var flock = ThreadFlock.open(null)) {
Thread thread = factory.newThread(() -> {
// child
result.set(name.get());
ThreadFlock flock1;
ThreadFlock flock2;
}
var box = new Box();
try {
- ScopedValue.where(name, "x1", () -> {
+ ScopedValue.runWhere(name, "x1", () -> {
box.flock1 = ThreadFlock.open(null);
box.flock2 = ThreadFlock.open(null);
});
fail();
} catch (StructureViolationException expected) { }
*/
@Test
void testStructureViolation2() {
ScopedValue<String> name = ScopedValue.newInstance();
try (var flock1 = ThreadFlock.open("flock1")) {
- ScopedValue.where(name, "x1", () -> {
+ ScopedValue.runWhere(name, "x1", () -> {
try (var flock2 = ThreadFlock.open("flock2")) {
- ScopedValue.where(name, "x2", () -> {
+ ScopedValue.runWhere(name, "x2", () -> {
try (var flock3 = ThreadFlock.open("flock3")) {
- ScopedValue.where(name, "x3", () -> {
+ ScopedValue.runWhere(name, "x3", () -> {
var flock4 = ThreadFlock.open("flock4");
try {
flock1.close();
fail();
*/
@Test
void testStructureViolation3() {
ScopedValue<String> name = ScopedValue.newInstance();
try (var flock1 = ThreadFlock.open("flock1")) {
- ScopedValue.where(name, "x1", () -> {
+ ScopedValue.runWhere(name, "x1", () -> {
try (var flock2 = ThreadFlock.open("flock2")) {
- ScopedValue.where(name, "x2", () -> {
+ ScopedValue.runWhere(name, "x2", () -> {
try (var flock3 = ThreadFlock.open("flock3")) {
- ScopedValue.where(name, "x3", () -> {
+ ScopedValue.runWhere(name, "x3", () -> {
var flock4 = ThreadFlock.open("flock4");
try {
flock2.close();
fail();
*/
@Test
void testStructureViolation4() {
ScopedValue<String> name = ScopedValue.newInstance();
try (var flock1 = ThreadFlock.open("flock1")) {
- ScopedValue.where(name, "x1", () -> {
+ ScopedValue.runWhere(name, "x1", () -> {
try (var flock2 = ThreadFlock.open("flock2")) {
- ScopedValue.where(name, "x2", () -> {
+ ScopedValue.runWhere(name, "x2", () -> {
try (var flock3 = ThreadFlock.open("flock3")) {
- ScopedValue.where(name, "x3", () -> {
+ ScopedValue.runWhere(name, "x3", () -> {
var flock4 = ThreadFlock.open("flock4");
try {
flock3.close();
fail();
@ParameterizedTest
@MethodSource("factories")
void testStructureViolation5(ThreadFactory factory) throws Exception {
ScopedValue<String> name = ScopedValue.newInstance();
try (var flock = ThreadFlock.open(null)) {
- ScopedValue.where(name, "duke", () -> {
+ ScopedValue.runWhere(name, "duke", () -> {
Thread thread = factory.newThread(() -> { });
assertThrows(StructureViolationException.class, () -> flock.start(thread));
});
}
}
*/
@ParameterizedTest
@MethodSource("factories")
void testStructureViolation6(ThreadFactory factory) throws Exception {
ScopedValue<String> name = ScopedValue.newInstance();
- ScopedValue.where(name, "duke", () -> {
+ ScopedValue.runWhere(name, "duke", () -> {
try (var flock = ThreadFlock.open(null)) {
- ScopedValue.where(name, "duchess", () -> {
+ ScopedValue.runWhere(name, "duchess", () -> {
Thread thread = factory.newThread(() -> { });
assertThrows(StructureViolationException.class, () -> flock.start(thread));
});
}
});
< prev index next >