<dependency> <groupId>org.scalaz</groupId> <artifactId>scalaz-concurrent_2.13</artifactId> <version>7.3.5</version> </dependency> import scalaz.concurrent.Future; import scalaz.concurrent.Promise; import scalaz.concurrent.Task; import scalaz.concurrent.Strategy; public class ConcurrentExample { public static void main(String[] args) { Promise<Integer> promise = Promise.apply(); Task<Integer> task1 = Task.fork(() -> calculateSquare(5)); Task<Integer> task2 = Task.fork(() -> calculateCube(3)); Task<Integer> combinedTask = task1.flatMap(result1 -> task2.map(result2 -> result1 + result2)); combinedTask.runAsync(promise::fulfill); promise.get().forEach(System.out::println); } private static int calculateSquare(int number) { try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } return number * number; } private static int calculateCube(int number) { try { Thread.sleep(1500); } catch (InterruptedException e) { e.printStackTrace(); } return number * number * number; } }


上一篇:
下一篇:
切换中文