In the producer-consumer problem, why is using just the synchronized keyword often not enough?
synchronized
It does not allow threads to communicate about the state of shared data
It makes the program run slower
It does not work on multi-core processors
It only synchronizes methods, not data