Communiquez avec les autres et partagez vos connaissances professionnelles

Inscrivez-vous ou connectez-vous pour rejoindre votre communauté professionnelle.

Suivre

What is Lock interface in Java Concurrency API? What are it’s benefits over synchronization?

user-image
Question ajoutée par Mohd shahnawaz khan , Associate Project , Cognizant Technology Solution
Date de publication: 2014/02/17
Utilisateur supprimé
par Utilisateur supprimé

java.util.concurrent api provides a class called as Lock, which would basically serializes the conntrol in order to access the critical resource.

If you're simply locking an object, I'd prefer to use synchronized

Example:

Lock.acquire(); doSomethingNifty();// Throws a NPE!Lock.release();// Oh noes, we never release the lock!

You have to explicitly do try{} finally{} everywhere.

Whereas with synchronized, it's super clear and impossible to get wrong:

synchronized(myObject){ doSomethingNifty();}

That said, Locks may be more useful for more complicated things where you can't acquire and release in such a clean manner. I would honestly prefer to avoid using bare Locks in the first place, and just go with a more sophisticated concurrency control such as a CyclicBarrier or a LinkedBlockingQueue, if they meet your needs.

 

I've never had a reason to use wait() or notify() but there may be some good ones.

More Questions Like This