join()
方法等待线程死亡。 换句话说,它会导致当前运行的线程停止执行,直到它加入的线程完成其任务。
语法:
public void join()throws InterruptedException
public void join(long milliseconds)throws InterruptedException
join()方法的示例
package com.zyiz; class TestJoinMethod1 extends Thread { public void run() { for (int i = 1; i <= 5; i++) { try { Thread.sleep(500); } catch (Exception e) { System.out.println(e); } System.out.println(i); } } public static void main(String args[]) { TestJoinMethod1 t1 = new TestJoinMethod1(); TestJoinMethod1 t2 = new TestJoinMethod1(); TestJoinMethod1 t3 = new TestJoinMethod1(); t1.start(); try { t1.join(); } catch (Exception e) { System.out.println(e); } t2.start(); t3.start(); } }
执行上面示例代码,得到以下结果:
1 2 3 4 5 1 1 2 2 3 3 4 4 5 5
正如在上面的示例中所看到的,当t1
完成其任务时,t2
和t3
才开始执行。
join(long miliseconds)方法的示例
package com.zyiz; class TestJoinMethod2 extends Thread { public void run() { for (int i = 1; i <= 5; i++) { try { Thread.sleep(500); } catch (Exception e) { System.out.println(e); } System.out.println(i); } } public static void main(String args[]) { TestJoinMethod2 t1 = new TestJoinMethod2(); TestJoinMethod2 t2 = new TestJoinMethod2(); TestJoinMethod2 t3 = new TestJoinMethod2(); t1.start(); try { t1.join(1500); } catch (Exception e) { System.out.println(e); } t2.start(); t3.start(); } }
执行上面示代码,得到以下结果:
1 2 3 1 1 4 2 2 5 3 3 4 4 5 5
在上面的例子中,当t1
完成其任务1500毫秒(3次),然后t2
和t3
开始执行。
getName(),setName(String) 和 getId() 方法示例:
package com.zyiz; class TestJoinMethod3 extends Thread { public void run() { System.out.println("running..."); } public static void main(String args[]) { TestJoinMethod3 t1 = new TestJoinMethod3(); TestJoinMethod3 t2 = new TestJoinMethod3(); System.out.println("Name of t1:" + t1.getName()); System.out.println("Name of t2:" + t2.getName()); System.out.println("id of t1:" + t1.getId()); t1.start(); t2.start(); t1.setName("New ThreadName-1"); System.out.println("After changing name of t1:" + t1.getName()); } }
执行上面示例代码,得到以下结果:
Name of t1:Thread-0 Name of t2:Thread-1 id of t1:10 After changing name of t1:New ThreadName-1 running... running...
currentThread()方法:currentThread()
方法返回对当前正在执行的线程对象的引用。
语法:
public static Thread currentThread()
currentThread()方法的示例
package com.zyiz; class TestJoinMethod4 extends Thread { public void run() { System.out.println(Thread.currentThread().getName()); } public static void main(String args[]) { TestJoinMethod4 t1 = new TestJoinMethod4(); TestJoinMethod4 t2 = new TestJoinMethod4(); t1.start(); t2.start(); } }
执行上面示例代码,得到以下结果:
Thread-1 Thread-0