CyStack logo
  • Sản phẩm & Dịch vụ
  • Giải pháp
  • Bảng giá
  • Công ty
  • Tài liệu
Vi

vi

Mục lục

Trang chủBlogVí dụ về phương thức join...
Java

Ví dụ về phương thức join trong Java Thread

2 phút đọc01/08/2025
CyStack Author
Bao Tran

Web Developer

0 lượt xem
Reading Time: 2 minutes

Phương thức join trong Java Thread có thể được sử dụng để tạm dừng việc thực thi của thread hiện tại cho đến khi thread được chỉ định kết thúc. Có ba phiên bản của phương thức join.

phương thức join trong Java Thread

Phương thức join trong Java Thread

  • **public final void join():**Phương thức join() này trong Java khiến luồng hiện tại phải chờ cho đến khi luồng mà nó gọi join()được gọi lên kết thúc. Nếu luồng bị ngắt trong quá trình chờ, nó sẽ ném ra ngoại lệ InterruptedException.
  • public final synchronized void join(long millis): Phương thức join(long millis) được dùng để yêu cầu luồng hiện tại chờ cho đến khi luồng được gọi kết thúc hoặc hết thời gian chờ đã chỉ định tính bằng mili-giây. Tuy nhiên, do việc thực thi luồng phụ thuộc vào cách hệ điều hành triển khai, nên không có gì đảm bảo rằng luồng hiện tại sẽ chỉ chờ đúng khoảng thời gian đã chỉ định.
  • public final synchronized void join(long millis, int nanos): Phương thức join(long millis, int nanos) cho phép luồng hiện tại chờ đến khi luồng mục tiêu kết thúc hoặc sau khoảng thời gian tính bằng mili-giây cộng với nano-giây đã chỉ định.

Dưới đây là một ví dụ đơn giản minh họa cách sử dụng các phương thức Thread.join. Mục tiêu của chương trình là đảm bảo luồng main là luồng kết thúc sau cùng, và luồng thứ ba chỉ bắt đầu khi luồng đầu tiên đã kết thúc.

package com.journaldev.threads;

public class ThreadJoinExample {

    public static void main(String[] args) {
        Thread t1 = new Thread(new MyRunnable(), "t1");
        Thread t2 = new Thread(new MyRunnable(), "t2");
        Thread t3 = new Thread(new MyRunnable(), "t3");
        
        t1.start();
        
        //start second thread after waiting for 2 seconds or if it's dead
        try {
            t1.join(2000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        t2.start();
        
        //start third thread only when first thread is dead
        try {
            t1.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        
        t3.start();
        
        //let all threads finish execution before finishing main thread
        try {
            t1.join();
            t2.join();
            t3.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
        System.out.println("All threads are dead, exiting main thread");
    }

}

class MyRunnable implements Runnable{

    @Override
    public void run() {
        System.out.println("Thread started:::"+Thread.currentThread().getName());
        try {
            Thread.sleep(4000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("Thread ended:::"+Thread.currentThread().getName());
    }
    
}

Kết quả đầu ra của chương trình trên là:

Thread started:::t1
Thread started:::t2
Thread ended:::t1
Thread started:::t3
Thread ended:::t2
Thread ended:::t3
All threads are dead, exiting main thread

Đó là tất cả phần tóm lược nhanh về ví dụ sử dụng phương thức join trong Java thread.

Về tác giả

Bao Tran
Bao TranWeb Developer

I’m passionate about web development and sharing my insights through articles, with over 8 years of experience. I hope these sharings inspire you and help build a strong web development community. @#@ Tôi đam mê phát triển web và chia sẻ những hiểu biết của mình thông qua các bài viết, với hơn 8 năm kinh nghiệm. Tôi hy vọng những chia sẻ này sẽ truyền cảm hứng cho các bạn và giúp xây dựng một cộng đồng phát triển web mạnh mẽ.

Cập nhật thông tin mới nhấtNhận các thông tin mới nhất về mối đe dọa, báo cáo an ninh mạng từ CyStack về hòm thư điện tử của bạn

Thảo luận (0)

Đăng nhập để thảo luận

Bài viết liên quan