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

进程与线程

开发平台:

Java

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