/** * Equivalent to {@code blocking("blocking", callable, executor)}. * @see #blocking(String, Callable, Executor) */ public static <T> Task<T> blocking(final Callable<? extends T> callable, final Executor executor) { return blocking("blocking: " + _taskDescriptor.getDescription(callable.getClass().getName()), callable, executor); }
@Override public Task<Map<Integer, Try<String>>> taskForBatch(Set<Integer> keys) { return Task.blocking(() -> { try { // make this batching task long-running Thread.sleep(_sleepMs); } catch (InterruptedException ignored) { } return keys.stream().collect(Collectors.toMap(k -> k, k -> Success.of(Integer.toString(k)))); }, _executorService); } }
@Test public void testBlocking() { TestingExecutorService es = new TestingExecutorService(Executors.newSingleThreadExecutor()); try { Task<String> task = Task.blocking(() -> "from blocking", es); runAndWait("TestTaskFactoryMethods.testBlocking", task); assertEquals(task.get(), "from blocking"); assertEquals(es.getCount(), 1); assertEquals(countTasks(task.getTrace()), 1); } finally { es.shutdown(); } }
@Test public void testBlockingTaskType() { TestingExecutorService es = new TestingExecutorService(Executors.newSingleThreadExecutor()); try { Task<String> task = Task.blocking(() -> "blocking task", es); runAndWait("blockingTaskType", task); assertEquals(task.getShallowTrace().getTaskType(), TaskType.BLOCKING.getName()); } finally { es.shutdown(); } }
/** * Equivalent to {@code blocking("blocking", callable, executor)}. * @see #blocking(String, Callable, Executor) */ public static <T> Task<T> blocking(final Callable<? extends T> callable, final Executor executor) { return blocking("blocking: " + _taskDescriptor.getDescription(callable.getClass().getName()), callable, executor); }
@Override public Task<Void> get(String key, final @UnstructuredDataWriterParam UnstructuredDataWriter writer) { return Task.blocking("fetchBytes", () -> { GreetingUnstructuredDataUtils.respondGoodUnstructuredData(writer); return null; }, _scheduler); } }