Pergunta de entrevista da empresa IBM

What is the difference between synchronized and Lock in Java multithreading, and when would you use one over the other?