How do you handle concurrency in Java? Compare threads, the Executor framework, synchronized blocks, explicit locks, atomic variables, concurrent collections, and futures/CompletableFuture. Explain techniques to avoid race conditions, deadlocks, and starvation, with examples.