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

进程与线程

开发平台:

Java

  1. public class DirtyRead extends Object {
  2. private String fname;
  3. private String lname;
  4. public String getNames() {
  5. return lname + ", " + fname;
  6. }
  7. public synchronized void setNames(
  8. String firstName, 
  9. String lastName
  10. ) {
  11. print("entering setNames()");
  12. fname = firstName;
  13. try { Thread.sleep(1000); } 
  14. catch ( InterruptedException x ) { }
  15. lname = lastName;
  16. print("leaving setNames() - " + lname + ", " + fname);
  17. }
  18. public static void print(String msg) {
  19. String threadName = Thread.currentThread().getName();
  20. System.out.println(threadName + ": " + msg);
  21. }
  22. public static void main(String[] args) {
  23. final DirtyRead dr = new DirtyRead();
  24. dr.setNames("George", "Washington"); // initially 
  25. Runnable runA = new Runnable() {
  26. public void run() {
  27. dr.setNames("Abe", "Lincoln");
  28. }
  29. };
  30. Thread threadA = new Thread(runA, "threadA");
  31. threadA.start();
  32. try { Thread.sleep(200); } 
  33. catch ( InterruptedException x ) { }
  34. Runnable runB = new Runnable() {
  35. public void run() {
  36. print("getNames()=" + dr.getNames());
  37. }
  38. };
  39. Thread threadB = new Thread(runB, "threadB");
  40. threadB.start();
  41. }
  42. }