Java uses intrinsic locks to manage thread synchronization.When a method or code block is marked as synchronized, a thread must acquire the lock for the object before it can run that code.The lock prevents other threads from accessing the synchronized code until it is released.Java's monitors act as gatekeepers, managing the entry and exit of threads into synchronized regions.