`@Async` runs a method in a separate thread via a Spring proxy and an `Executor`. Common pitfalls: it doesn’t work on self‑invocation, it requires a public method on a Spring bean, and blocking I/O can still exhaust the thread pool if not sized properly.