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

进程与线程

开发平台:

Java

  1. public class OnlyOneInMethod extends Object {
  2. private String objID;
  3. public OnlyOneInMethod(String objID) {
  4. this.objID = objID;
  5. }
  6. public synchronized void doStuff(int val) {
  7. print("entering doStuff()");
  8. int num = val * 2 + objID.length();
  9. print("in doStuff() - local variable num=" + num);
  10. // slow things down to make observations
  11. try { Thread.sleep(2000); } catch ( InterruptedException x ) { }
  12. print("leaving doStuff()");
  13. }
  14. public void print(String msg) {
  15. threadPrint("objID=" + objID + " - " + msg);
  16. }
  17. public static void threadPrint(String msg) {
  18. String threadName = Thread.currentThread().getName();
  19. System.out.println(threadName + ": " + msg);
  20. }
  21. public static void main(String[] args) {
  22. final OnlyOneInMethod ooim = new OnlyOneInMethod("obj1");
  23. Runnable runA = new Runnable() {
  24. public void run() {
  25. ooim.doStuff(3);
  26. }
  27. };
  28. Thread threadA = new Thread(runA, "threadA");
  29. threadA.start();
  30. try { Thread.sleep(200); } catch ( InterruptedException x ) { }
  31. Runnable runB = new Runnable() {
  32. public void run() {
  33. ooim.doStuff(7);
  34. }
  35. };
  36. Thread threadB = new Thread(runB, "threadB");
  37. threadB.start();
  38. }
  39. }