-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathStructuredConcurrencyDemo.java
More file actions
72 lines (60 loc) · 2.56 KB
/
Copy pathStructuredConcurrencyDemo.java
File metadata and controls
72 lines (60 loc) · 2.56 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package java19.structuredconcurrency;
/**
* Java 19 Structured Concurrency (Incubator) Demonstrates structured task scopes for concurrent programming
* NOTE: Requires: - --add-modules jdk.incubator.concurrent - --enable-preview
* Compile: javac --add-modules jdk.incubator.concurrent --enable-preview --release 19 StructuredConcurrencyDemo.java Run: java --add-modules jdk.incubator.concurrent --enable-preview StructuredConcurrencyDemo
*/
public class StructuredConcurrencyDemo
{
public static void main(String[] args)
{
System.out.println("=== Java 19 Structured Concurrency (Incubator) ===\n");
System.out.println("Structured Concurrency provides:");
System.out.println("1. StructuredTaskScope - groups related tasks");
System.out.println("2. Automatic cancellation on failure");
System.out.println("3. Better error handling");
System.out.println("4. Improved observability");
System.out.println("\nExample usage:");
System.out.println("""
import jdk.incubator.concurrent.StructuredTaskScope;
// ShutdownOnFailure - cancels all if any fails
try (var scope = new StructuredTaskScope.ShutdownOnFailure()) {
Future<String> user = scope.fork(() -> fetchUser());
Future<String> order = scope.fork(() -> fetchOrder());
scope.join(); // Wait for all tasks
scope.throwIfFailed(); // Throw if any failed
// Use results
String userResult = user.resultNow();
String orderResult = order.resultNow();
}
// Automatic cleanup if any task fails
""");
System.out.println("\nKey Features:");
System.out.println("- Automatic cancellation of subtasks");
System.out.println("- Exception propagation");
System.out.println("- Better error handling");
System.out.println("- Structured lifecycle");
System.out.println("- Improved observability");
System.out.println("\nUse Cases:");
System.out.println("- Parallel API calls");
System.out.println("- Concurrent data fetching");
System.out.println("- Task coordination");
System.out.println("- Error handling in concurrent code");
System.out.println("\nBenefits:");
System.out.println("- Treats groups of tasks as a unit");
System.out.println("- Automatic cleanup on failure");
System.out.println("- Better error handling");
System.out.println("- Structured lifecycle management");
}
// Example methods (would be implemented in real usage)
private static String fetchUser()
{
// Simulate fetching user data
return "User data";
}
private static String fetchOrder()
{
// Simulate fetching order data
return "Order data";
}
}