import scalaz.concurrent.Future;
import scalaz.concurrent.Task;
import scalaz.effect.IO;
Task<Integer> task = Task.delay(() -> {
return 42;
});
Future<Integer> future = task.run();
int result = future.get();
Future<Integer> future = task.handle((Throwable t) -> {
return -1;
});
Future<Integer> future1 = task.fork();
Future<String> future2 = task.fork();
Future<Tuple2<Integer, String>> combinedFuture = future1.flatMap((Integer result1) ->
future2.map((String result2) ->
Tuple2(result1, result2)
)
);