Three key points about concurrent programming in Java:
1. A thread is a sequence of execution within a process that allows for multitasking. The single threaded model is most common but multithreading allows for analogues to multiple bank tellers.
2. There are two ways to create threads in Java: extending the Thread class or implementing the Runnable interface. The Runnable interface is useful when additional functionality is needed, such as with GUIs.
3. Synchronization is needed to prevent interference between threads accessing shared data. The synchronized keyword allows only one thread to execute a synchronized method at a time, preventing issues like race conditions.