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

进程与线程

开发平台:

Java

  1. public class JoinDemo extends Object {
  2. public static Thread launch(String name, long napTime) {
  3. final long sleepTime = napTime;
  4. Runnable r = new Runnable() {
  5. public void run() {
  6. try {
  7. print("in run() - entering");
  8. Thread.sleep(sleepTime);
  9. } catch ( InterruptedException x ) {
  10. print("interrupted!");
  11. } finally {
  12. print("in run() - leaving");
  13. }
  14. }
  15. };
  16. Thread t = new Thread(r, name);
  17. t.start();
  18. return t;
  19. }
  20. private static void print(String msg) {
  21. String name = Thread.currentThread().getName();
  22. System.out.println(name + ": " + msg);
  23. }
  24. public static void main(String[] args) {
  25. Thread[] t = new Thread[3];
  26. t[0] = launch("threadA", 2000);
  27. t[1] = launch("threadB", 1000);
  28. t[2] = launch("threadC", 3000);
  29. for ( int i = 0; i < t.length; i++ ) {
  30. try {
  31. String idxStr = "t[" + i + "]";
  32. String name = "[" + t[i].getName() + "]";
  33. print(idxStr + ".isAlive()=" + 
  34. t[i].isAlive() + " " + name);
  35. print("about to do: " + idxStr + 
  36. ".join() " + name);
  37. long start = System.currentTimeMillis();
  38. t[i].join(); // wait for the thread to die
  39. long stop = System.currentTimeMillis();
  40. print(idxStr + ".join() - took " + 
  41. ( stop - start ) + " ms " + name);
  42. } catch ( InterruptedException x ) {
  43. print("interrupted waiting on #" + i);
  44. }
  45. }
  46. }
  47. }