Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Automated Detection

Some available tools can diagnose violations of this rule by detecting instance fields with empty locksets.Some available static analysis tools can detect the instances of nonatomic update of a concurrently shared value. The result of the update is determined by the interleaving of thread execution. These tools can detect the instances where thread-shared data is accessed without holding an appropriate lock, possibly causing a race condition.

...

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="1b53ffd80bdf2b87-35c350fa-4a15491c-b007a23a-e8609fa9301307792d4028fc"><ac:plain-text-body><![CDATA[

[[API 2006

AA. References#API 06]]

Class AtomicInteger

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="36a1d8b27d3f50f6-4081487c-4ec941a0-892fa263-f7aac8f02909c54b9e4ad872"><ac:plain-text-body><![CDATA[

[[Bloch 2008

AA. References#Bloch 08]]

Item 66. Synchronize access to shared mutable data

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="232b77cf64861c79-bd3b9c89-48ef447e-9c8bab19-7cb10537cb126cb3fcf6b880"><ac:plain-text-body><![CDATA[

[[Goetz 2006

AA. References#Goetz 06]]

2.3, Locking

]]></ac:plain-text-body></ac:structured-macro>

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="8f07f5bd09aaf4a1-907c2172-4f454c4b-a077b7cb-5e189671fb8adef88500247a"><ac:plain-text-body><![CDATA[

[[JLS 2005

AA. References#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>

 

§17.4.5, Happens-Before Order

 

§17.4.3, Programs and Program Order

 

§17.4.8, Executions and Causality Requirements

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="0ae79643637c79ee-f4586749-45a44d83-812096b4-10d94f52ab823124eeed4c33"><ac:plain-text-body><![CDATA[

[[Lea 2000

AA. References#Lea 00]]

Section 2.2.7, The Java Memory Model

]]></ac:plain-text-body></ac:structured-macro>

 

Section 2.1.1.1, Objects and Locks

<ac:structured-macro ac:name="unmigrated-wiki-markup" ac:schema-version="1" ac:macro-id="bb54a38654dd1b0c-19613f3e-4bdf4818-844fbf81-94ec8413f8577d06de5d872c"><ac:plain-text-body><![CDATA[

[[Tutorials 2008

AA. References#Tutorials 08]]

[Java Concurrency Tutorial

http://java.sun.com/docs/books/tutorial/essential/concurrency/index.html]

]]></ac:plain-text-body></ac:structured-macro>

...