What is the primary advantage of using a CompletableFuture in Java?
CompletableFuture
It simplifies error handling in multithreading
It ensures thread safety without explicit locks
It allows for non-blocking asynchronous task execution
It automatically cancels long-running tasks