I am new to Java concurrency/multi-threading. Can somebody please explain to me in what situations the acquire() and acquireUninterruptibly() must (or must not) be used, how they are different; and also how to use them (code sample?).

Thank you very much.