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

进程与线程

开发平台:

Java

  1. public class StaticSync extends Object {
  2. private static int nextSerialNum = 10001;
  3. public static synchronized int getNextSerialNum() {
  4. int sn = nextSerialNum;
  5. // Simulate a delay that is possible if the thread 
  6. // scheduler chooses to swap this thread off the 
  7. // processor at this point. The delay is exaggerated 
  8. // for demonstration purposes.
  9. try { Thread.sleep(1000); } 
  10. catch ( InterruptedException x ) { }
  11. nextSerialNum++;
  12. return sn;
  13. }
  14. private static void print(String msg) {
  15. String threadName = Thread.currentThread().getName();
  16. System.out.println(threadName + ": " + msg);
  17. }
  18. public static void main(String[] args) {
  19. try {
  20. Runnable r = new Runnable() {
  21. public void run() {
  22. print("getNextSerialNum()=" + 
  23. getNextSerialNum());
  24. }
  25. };
  26. Thread threadA = new Thread(r, "threadA");
  27. threadA.start();
  28. Thread.sleep(1500); 
  29. Thread threadB = new Thread(r, "threadB");
  30. threadB.start();
  31. Thread.sleep(500); 
  32. Thread threadC = new Thread(r, "threadC");
  33. threadC.start();
  34. Thread.sleep(2500); 
  35. Thread threadD = new Thread(r, "threadD");
  36. threadD.start();
  37. } catch ( InterruptedException x ) {
  38. // ignore
  39. }
  40. }
  41. }