Book Image

Getting Started with Google Guava

By : Bill Bejeck
Book Image

Getting Started with Google Guava

By: Bill Bejeck

Overview of this book

<p>Java continues to maintain its popularity and is still one of the main languages used in the software industry today. But there are things in Java that are difficult to do that can be made easier; that’s where Guava comes in. Guava provides developers with a way to write better code, with less effort.</p> <p>Getting Started with Google Guava will show the reader how to start improving their code from the very first chapter. Packed with examples and loads of source code, this book will have an immediate impact on how you work with Java.</p> <p>This book starts with using Guava to help with the common tasks that Java developers perform. Then you’ll work your way through more specialized situations and finally some great functionality Guava provides that can add a lot of power to your applications with little effort. You will learn about Guava’s famous Collections classes that add unique features, like the Bi-Map, to Java’s already great Collection classes. We’ll see how to add some functional programming aspects to our code. We will also learn about using a self-loading cache for improved performance in our applications, and how to use the EventBus to create software that takes advantage of event-based programming.</p>
Table of Contents (16 chapters)
Getting Started with Google Guava
Credits
About the Author
About the Reviewers
www.PacktPub.com
Preface
Index

Synchronizing threads


Since Java offers the ability to have multiple threads running in a program, there are occasions when we need to restrict the access (synchronize) so that only one thread can access parts of our code at any given time. Java provides the synchronized keyword that accomplishes this goal of serial access. But using synchronized has some issues. First, if we need to call wait() on a thread, we must remember to use a while loop:

while(someCondition){
  try {
     wait();
  } catch (InterruptedException e) {
    //In this case we don't care, but we may want
    //to propagate with Thread.interrupt() 
   }
}

Second, if we have more than one condition that can cause a thread to go into a wait state, we must call notifyAll(), as we don't have the ability to notify threads for specific conditions. Using notifyAll() instead of notify() is less desirable due to the thrashing effect it has of waking up all the threads to compete for a lock when only one will do so. Java 5 introduced...