Phương thức join() chờ một thread chết. Nói cách khác, nó làm cho các thread đang chạy ngừng hoạt động cho đến khi luồng mà nó tham gia hoàn thành nhiệm vụ của nó.
Nội dung chính
Các dạng phương thức join()
- public void join()throws InterruptedException
- public void join(long milliseconds)throws InterruptedException
Ví dụ về phương thức join()
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(); } }
Output:
1 2 3 4 5 1 1 2 2 3 3 4 4 5 5
Như bạn thấy trong ví dụ trên, khi t1 hoàn thành nhiệm vụ của nó thì t2 và t3 bắt đầu thực thi.
Ví dụ về phương thức join(long miliseconds)
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(); } }
Output:
1 2 3 4 1 1 5 2 2 3 3 4 4 5 5
Trong ví dụ trên, khi t1 hoàn thành nhiệm vụ của nó cho 1500 mili giây (3 lần) thì t2 và t3 bắt đầu thực thi.
Các phương thức getName(),setName(String) và getId()
public String getName()
public void setName(String name)
public long getId()
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("Sonoo Jaiswal"); System.out.println("After changing name of t1:" + t1.getName()); } }
Output:
Name of t1:Thread-0 Name of t2:Thread-1 id of t1:10 running... After changing name of t1:Sonoo Jaiswal running...
Phương thức currentThread()
Phương thức currentThread() trả về một tham chiếu đến đối tượng thread hiện đang thực thi.
Ví dụ về phương thức currentThread()
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(); } }
Output:
Thread-0 Thread-1