Holding locks while performing time-consuming or blocking operations can severely degrade system performance and can result in starvation. Furthermore, deadlock can result if interdependent threads block indefinitely. Blocking operations include network, file, and console I/O (for example, Console.readLine()) and object serialization. Deferring a thread indefinitely also constitutes a blocking operation. Consequently, programs are forbidden to must not perform blocking operations while holding a lock.
...
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="e0876707b9a4b18a-4e0ec732-4fc44b5b-933ba07b-390c1baf126dd49e58bac226"><ac:plain-text-body><![CDATA[ | [[API 2006 | AA. Bibliography#API 06]] | Class | ]]></ac:plain-text-body></ac:structured-macro> | |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="be79c9fd40e30224-27f149cf-429d4acf-83ceaf20-d02181aeae2622672e653ade"><ac:plain-text-body><![CDATA[ | [[Grosso 2001 | AA. Bibliography#Grosso 01]] | [Chapter 10: Serialization | http://oreilly.com/catalog/javarmi/chapter/ch10.html] | ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="ddca34fb03e2ccee-d9396fe7-416d44d0-b4e089f2-0ff919d51d46038f612e29cb"><ac:plain-text-body><![CDATA[ | [[JLS 2005 | AA. Bibliography#JLS 05]] | [Chapter 17, Threads and Locks | http://java.sun.com/docs/books/jls/third_edition/html/memory.html] | ]]></ac:plain-text-body></ac:structured-macro> |
<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="fa00bf9644b77cba-cc24f1ce-43b2419a-bff98449-4ecc7320f58f27254b091aa0"><ac:plain-text-body><![CDATA[ | [[Rotem 2008 | AA. Bibliography#Rotem 08]] | [Falacies of Distributed Computing Explained | http://www.rgoarchitects.com/Files/fallacies.pdf] | ]]></ac:plain-text-body></ac:structured-macro> |
...