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
**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 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
{"success":true,"head":"<title>Ví dụ về phương thức join trong Java Thread - CyStack Tutorial</title>\n<meta name=\"description\" content=\"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\"/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-video-preview:-1, max-image-preview:large\"/>\n<link rel=\"canonical\" href=\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/\" />\n<meta property=\"og:locale\" content=\"en_US\" />\n<meta property=\"og:type\" content=\"article\" />\n<meta property=\"og:title\" content=\"Ví dụ về phương thức join trong Java Thread - CyStack Tutorial\" />\n<meta property=\"og:description\" content=\"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\" />\n<meta property=\"og:url\" content=\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/\" />\n<meta property=\"og:site_name\" content=\"CyStack Tutorial\" />\n<meta property=\"article:tag\" content=\"vi\" />\n<meta property=\"article:section\" content=\"Java\" />\n<meta property=\"og:updated_time\" content=\"2025-08-04T22:32:44+07:00\" />\n<meta property=\"og:image\" content=\"https://s2.cystack.net/tutorial/01173051/phuong-thuc-join-trong-java-thread.jpg\" />\n<meta property=\"og:image:secure_url\" content=\"https://s2.cystack.net/tutorial/01173051/phuong-thuc-join-trong-java-thread.jpg\" />\n<meta property=\"og:image:width\" content=\"1200\" />\n<meta property=\"og:image:height\" content=\"630\" />\n<meta property=\"og:image:alt\" content=\"phương thức join trong Java Thread\" />\n<meta property=\"og:image:type\" content=\"image/jpeg\" />\n<meta property=\"article:published_time\" content=\"2025-08-01T17:32:48+07:00\" />\n<meta property=\"article:modified_time\" content=\"2025-08-04T22:32:44+07:00\" />\n<meta name=\"twitter:card\" content=\"summary_large_image\" />\n<meta name=\"twitter:title\" content=\"Ví dụ về phương thức join trong Java Thread - CyStack Tutorial\" />\n<meta name=\"twitter:description\" content=\"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\" />\n<meta name=\"twitter:image\" content=\"https://s2.cystack.net/tutorial/01173051/phuong-thuc-join-trong-java-thread.jpg\" />\n<meta name=\"twitter:label1\" content=\"Written by\" />\n<meta name=\"twitter:data1\" content=\"Bao Tran\" />\n<meta name=\"twitter:label2\" content=\"Time to read\" />\n<meta name=\"twitter:data2\" content=\"2 minutes\" />\n<script type=\"application/ld+json\" class=\"rank-math-schema\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https://blog.cystack.org/tutorial/#person\",\"name\":\"CyStack Tutorial\"},{\"@type\":\"WebSite\",\"@id\":\"https://blog.cystack.org/tutorial/#website\",\"url\":\"https://blog.cystack.org/tutorial\",\"name\":\"CyStack Tutorial\",\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"inLanguage\":\"en-US\"},{\"@type\":\"ImageObject\",\"@id\":\"https://s2.cystack.net/tutorial/01173051/phuong-thuc-join-trong-java-thread.jpg\",\"url\":\"https://s2.cystack.net/tutorial/01173051/phuong-thuc-join-trong-java-thread.jpg\",\"width\":\"1200\",\"height\":\"630\",\"caption\":\"ph\\u01b0\\u01a1ng th\\u1ee9c join trong Java Thread\",\"inLanguage\":\"en-US\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":\"1\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"position\":\"2\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/category/java/\",\"name\":\"Java\"}},{\"@type\":\"ListItem\",\"position\":\"3\",\"item\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/\",\"name\":\"V\\u00ed d\\u1ee5 v\\u1ec1 ph\\u01b0\\u01a1ng th\\u1ee9c join trong Java Thread\"}}]},{\"@type\":\"WebPage\",\"@id\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/#webpage\",\"url\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/\",\"name\":\"V\\u00ed d\\u1ee5 v\\u1ec1 ph\\u01b0\\u01a1ng th\\u1ee9c join trong Java Thread - CyStack Tutorial\",\"datePublished\":\"2025-08-01T17:32:48+07:00\",\"dateModified\":\"2025-08-04T22:32:44+07:00\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/#website\"},\"primaryImageOfPage\":{\"@id\":\"https://s2.cystack.net/tutorial/01173051/phuong-thuc-join-trong-java-thread.jpg\"},\"inLanguage\":\"en-US\",\"breadcrumb\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/#breadcrumb\"}},{\"@type\":\"Person\",\"@id\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"name\":\"Bao Tran\",\"url\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https://secure.gravatar.com/avatar/0cdd33c02ec4a531fcf557b9c1ccc276df0c69031b2382c959bcf335248e840c?s=96&d=mm&r=g\",\"url\":\"https://secure.gravatar.com/avatar/0cdd33c02ec4a531fcf557b9c1ccc276df0c69031b2382c959bcf335248e840c?s=96&d=mm&r=g\",\"caption\":\"Bao Tran\",\"inLanguage\":\"en-US\"}},{\"@type\":\"BlogPosting\",\"headline\":\"V\\u00ed d\\u1ee5 v\\u1ec1 ph\\u01b0\\u01a1ng th\\u1ee9c join trong Java Thread - CyStack Tutorial\",\"keywords\":\"ph\\u01b0\\u01a1ng th\\u1ee9c join trong Java Thread,java thread,Java Thread join\",\"datePublished\":\"2025-08-01T17:32:48+07:00\",\"dateModified\":\"2025-08-04T22:32:44+07:00\",\"articleSection\":\"Java\",\"author\":{\"@id\":\"https://blog.cystack.org/tutorial/author/baotran/\",\"name\":\"Bao Tran\"},\"publisher\":{\"@id\":\"https://blog.cystack.org/tutorial/#person\"},\"description\":\"Ph\\u01b0\\u01a1ng th\\u1ee9c join trong Java Thread c\\u00f3 th\\u1ec3 \\u0111\\u01b0\\u1ee3c s\\u1eed d\\u1ee5ng \\u0111\\u1ec3 t\\u1ea1m d\\u1eebng vi\\u1ec7c th\\u1ef1c thi c\\u1ee7a thread hi\\u1ec7n t\\u1ea1i cho \\u0111\\u1ebfn khi thread \\u0111\\u01b0\\u1ee3c ch\\u1ec9 \\u0111\\u1ecbnh k\\u1ebft th\\u00fac. C\\u00f3 ba phi\\u00ean\",\"name\":\"V\\u00ed d\\u1ee5 v\\u1ec1 ph\\u01b0\\u01a1ng th\\u1ee9c join trong Java Thread - CyStack Tutorial\",\"@id\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/#richSnippet\",\"isPartOf\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/#webpage\"},\"image\":{\"@id\":\"https://s2.cystack.net/tutorial/01173051/phuong-thuc-join-trong-java-thread.jpg\"},\"inLanguage\":\"en-US\",\"mainEntityOfPage\":{\"@id\":\"https://blog.cystack.org/tutorial/2025/08/01/phuong-thuc-join-trong-java-thread/#webpage\"}}]}</script>\n"}