"Acquiring a monitor", "locking an object", "acquiring a lock on an object", "synchronizing on an object" - those all mean the same thing, essentially. I'm not going to explain in detail, as I assume you have some book that you're learnign from. (If not, you can use Thinking In Java - chapter 14 talks about synchronization. If you have more specific questions about locking, you can post them here.
All objects in java have a lock. Another term for lock is monitor. All classes have lock too. so you have object level lock and class level lock. When compiler encounters any code surrounded by 'synchronized' keyword, It means that it make sure that a thread would acquirer lock/monitor first before actually entering to "synchronized block".
This way threads synchronize with each other on shared data.
For more details: Pls refer Khalid Mughal's book on java.
I’ve looked at a lot of different solutions, and in my humble opinion Aspose is the way to go. Here’s the link: http://aspose.com