Introduction
In this challenge, we will use Google Guava to implement thread communication. Google Guava provides comprehensive solutions for common technologies such as high-concurrency, functional programming, collections, caching, events, and strings. In this challenge, we will focus on using Google Guava to implement thread communication (wait() / notify() / notifyAll() or Semaphore) combined with lock technology (synchronize, Lock) to solve "producer-consumer" problems. By completing the code and consulting the Google Guava API documentation, you will test your ability to understand and use the API effectively.