CompletableFuture allows performing asynchronous computations and triggering dependent computations asynchronously. It uses executors to run tasks asynchronously in separate threads using Callables and Futures. Callables are similar to Runnables but allow returning values. Futures represent asynchronous computations and allow obtaining results later. CompletableFuture helps with dependent asynchronous flows by linking Futures so subsequent tasks start when predecessors complete.