<dependency>
<groupId>org.scalaz</groupId>
<artifactId>scalaz-concurrent_2.13</artifactId>
</dependency>
import scalaz.concurrent.Task;
import java.util.Arrays;
public class ParallelComputationExample {
public static void main(String[] args) {
Task<Integer> task1 = Task.delay(() -> compute(1));
Task<Integer> task2 = Task.delay(() -> compute(2));
Task<Integer[]> parallelTask = Task.parallel(task1, task2);
Task<String> resultTask = parallelTask.map(results -> Arrays.toString(results));
}
private static int compute(int input) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
return input * 2;
}
}
import scalaz.concurrent.Task;
public class ErrorHandlingExample {
public static void main(String[] args) {
Task<String> task = Task.delay(() -> {
throw new RuntimeException("Async error occurred!");
});
Task<String> resultTask = task.handle(error -> "Handled error: " + error.getMessage());
String result = resultTask.run().unsafePerformSync();
System.out.println(result);
}
}
import scalaz.concurrent.Strategy;
import scalaz.concurrent.Task;
public class ThreadPoolAndSchedulerConfigExample {
public static void main(String[] args) {
int numThreads = 4;
Strategy.Executor executor = Strategy.Executor.newFixedThreadPool(numThreads);
Strategy strategy = Strategy.ExecutorStrategy(executor);
Task<String> task = Task.delay(() -> "Hello, Scalaz Concurrent!");
Task<String> resultTask = task.map(str -> str.toUpperCase()).executeWith(strategy);
String result = resultTask.run().unsafePerformSync();
System.out.println(result);
}
}