ExecutorService также предоставляет доступ к FutureTask, который вернет вызывающему классу результаты фоновой задачи после завершения. В случае реализации Callable
public class TaskOne implements Callable<String> {
@Override
public String call() throws Exception {
String message = "Task One here. . .";
return message;
}
}
public class TaskTwo implements Callable<String> {
@Override
public String call() throws Exception {
String message = "Task Two here . . . ";
return message;
}
}
// from the calling class
ExecutorService service = Executors.newFixedThreadPool(2);
// set of Callable types
Set<Callable<String>>callables = new HashSet<Callable<String>>();
// add tasks to Set
callables.add(new TaskOne());
callables.add(new TaskTwo());
// list of Future<String> types stores the result of invokeAll()
List<Future<String>>futures = service.invokeAll(callables);
// iterate through the list and print results from get();
for(Future<String>future : futures) {
System.out.println(future.get());
}
Я согласен с Михаэлем Вандерхейденом: я провел несколько тестов сетки и думаю так же, как деление на новую сетку, где вы упорядоченно размещаете новые элементы, как вы помещаете их в изображение, более выполнимо В качестве рекомендации я знаю, что цель состоит в том, чтобы использовать display: grid, но вы можете использовать новые возможности и более широкие возможности, если вы используете CSS-фреймворк, я знаю, что кто-то уже предложил это, но вы могли бы стандартизировать поведение вашей сетки и даже доступ к большему количеству вариантов поведения внутренних элементов с использованием framworks (HTML-css-JS), я не знаю обстоятельств требования, но я думаю, что рекомендация верна, удачи