import scalaz.concurrent.Future;
import scalaz.concurrent.Promise;
public class AsyncExample {
public static void main(String[] args) {
Future<String> future = Future.fork(() -> {
Thread.sleep(1000);
return "Hello, World!";
});
future.foreach(System.out::println);
}
}
import scalaz.concurrent.Task;
public class ParallelExample {
public static void main(String[] args) {
Task<Integer> task1 = Task.delay(() -> expensiveComputation(1));
Task<Integer> task2 = Task.delay(() -> expensiveComputation(2));
Task<Integer> combinedTask = task1.flatMap(result1 -> task2.map(result2 -> result1 + result2));
int result = combinedTask.run();
System.out.println("Result: " + result);
}
private static int expensiveComputation(int value) {
// Expensive computation logic
return value * 2;
}
}
import scalaz.concurrent.MVar;
public class ConcurrentDataStructureExample {
public static void main(String[] args) {
MVar<Integer> mvar = new MVar<>();
Thread producer = new Thread(() -> {
mvar.put(42); // Producing a value
});
Thread consumer = new Thread(() -> {
int value = mvar.take(); // Consuming the value
System.out.println("Value: " + value);
});
producer.start();
consumer.start();
}
}