CubbyHole.java
上传用户:songled
上传日期:2022-07-14
资源大小:94k
文件大小:1k
源码类别:

进程与线程

开发平台:

Java

  1. public class CubbyHole extends Object {
  2. private Object slot;
  3. public CubbyHole() {
  4. slot = null; // null indicates empty
  5. }
  6. public synchronized void putIn(Object obj) 
  7. throws InterruptedException {
  8. print("in putIn() - entering");
  9. while ( slot != null ) {
  10. print("in putIn() - occupied, about to wait()");
  11. wait(); // wait while slot is occupied
  12. print("in putIn() - notified, back from wait()");
  13. }
  14. slot = obj;  // put object into slot
  15. print("in putIn() - filled slot, about to notifyAll()");
  16. notifyAll(); // signal that slot has been filled
  17. print("in putIn() - leaving");
  18. }
  19. public synchronized Object takeOut() 
  20. throws InterruptedException {
  21. print("in takeOut() - entering");
  22. while ( slot == null ) {
  23. print("in takeOut() - empty, about to wait()");
  24. wait(); // wait while slot is empty
  25. print("in takeOut() - notified, back from wait()");
  26. }
  27. Object obj = slot;
  28. slot = null; // mark slot as empty
  29. print(
  30. "in takeOut() - emptied slot, about to notifyAll()");
  31. notifyAll(); // signal that slot is empty
  32. print("in takeOut() - leaving");
  33. return obj;
  34. }
  35. private static void print(String msg) {
  36. String name = Thread.currentThread().getName();
  37. System.out.println(name + ": " + msg);
  38. }
  39. }