Today’s lecture reviewed the built-in Java concurrency primitives, the challenges of writing thread-safe code, and patterns that may help with that: immutability, synchronization wrappers, and control abstractions like producer/consumer. More high-level concurrency abstractions, such as those in the java.util.concurrent
package, support programming that is not only thread-safe but takes distinct advantage of concurrency to increase performance and responsiveness.
There were also announcements about the course web pages, Facebook page and Twitter feed; and a walk through some intentionally racy code in the source for the standard Java String
class.
Link: Slides for Lecture 3
Homework
Before the next lecture:
- Read the remaining sections of the Java Concurrency Tutorial.
To understand more about the meaning and effect of the volatile
keyword, Silver Taza recommends the Javamex tutorial.
Links: Java Concurrency Tutorial; Javamex on volatile
References
-
Brian Goetz, Time Peierls, Joshua Block, Joseph Bowbeer, David Holmes and Doug Lea. Java Concurrency In Practice. Addison-Wesley, 2006.
The current standard reference for concurrent Java programming.
-
Doug Lea. Concurrent Programming in Java: Design Principles and Patterns. Second Edition. Addison-Wesley, 1999.
The original text describing many of the patterns now implemented inside
java.util.concurrent
.