Junior — Middle
What methods are used to implement asynchronous task execution in Java?
sobes.tech AI
Answer from AI
In Java, asynchronous task execution can be implemented in several ways:
- Using the Runnable interface and Thread
- Creating a new thread and running a task in it.
new Thread(() -> {
// task code
}).start();
- ExecutorService and thread pool
- Allows managing a group of threads and executing tasks asynchronously.
ExecutorService executor = Executors.newFixedThreadPool(2);
executor.submit(() -> {
// asynchronous task
});
executor.shutdown();
- Future and Callable
- Allows obtaining the result of an asynchronous task.
Callable<Integer> task = () -> {
// calculations
return 123;
};
Future<Integer> future = executor.submit(task);
// later, the result can be retrieved
Integer result = future.get();
- CompletableFuture (Java 8+)
- Enables building chains of asynchronous operations with a convenient API.
CompletableFuture.supplyAsync(() -> {
return "Result";
}).thenAccept(result -> {
System.out.println(result);
});
- AsyncTask (in Android, deprecated)
- Previously used for asynchronous tasks with UI updates, now other approaches are recommended (e.g., Executors, RxJava, or Kotlin Coroutines).
Thus, the choice of method depends on the specific task, thread management requirements, and the need to obtain a result.