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

进程与线程

开发平台:

Java

  1. public class CorruptWrite extends Object {
  2. private String fname;
  3. private String lname;
  4. public void setNames(String firstName, String lastName) {
  5. print("entering setNames()");
  6. fname = firstName;
  7. // A thread might be swapped out here, and may stay 
  8. // out for a varying amount of time. The different 
  9. // sleep times exaggerate this.
  10. if ( fname.length() < 5 ) {
  11. try { Thread.sleep(1000); } 
  12. catch ( InterruptedException x ) { }
  13. } else {
  14. try { Thread.sleep(2000); } 
  15. catch ( InterruptedException x ) { }
  16. }
  17. lname = lastName;
  18. print("leaving setNames() - " + lname + ", " + fname);
  19. }
  20. public static void print(String msg) {
  21. String threadName = Thread.currentThread().getName();
  22. System.out.println(threadName + ": " + msg);
  23. }
  24. public static void main(String[] args) {
  25. final CorruptWrite cw = new CorruptWrite();
  26. Runnable runA = new Runnable() {
  27. public void run() {
  28. cw.setNames("George", "Washington");
  29. }
  30. };
  31. Thread threadA = new Thread(runA, "threadA");
  32. threadA.start();
  33. try { Thread.sleep(200); } 
  34. catch ( InterruptedException x ) { }
  35. Runnable runB = new Runnable() {
  36. public void run() {
  37. cw.setNames("Abe", "Lincoln");
  38. }
  39. };
  40. Thread threadB = new Thread(runB, "threadB");
  41. threadB.start();
  42. }
  43. }