在这篇文章中,我们将了解 Java 线程连接方法。
Thread 类的join()方法可用于停止线程的当前执行,直到它加入的线程完成其任务。所以基本上,它等待调用 join 方法的线程死亡。例如: 这里当你调用 时t1.join(),主线程会等待 t1 完成它的启动,然后再恢复它的执行。
join()
t1.join()
// Main thread execution Thread t1=new Thread(mr,"Thread 1");t1.start(); // lets waits for t1 to die try { t1.join(); } catch (InterruptedException e) {
连接方法有三种变体
调用 join 方法的线程死亡。
在线程上调用此方法时,它会等待以下任一情况:
你知道吗? 如果调用 join 方法的线程已经终止或尚未启动,则 join 方法立即返回。
你知道吗?
如果调用 join 方法的线程已经终止或尚未启动,则 join 方法立即返回。
我们举一个简单的例子:
package org.arpit.java2blog; public class MyRunnable implements Runnable { public void run() { try { System.out.println(Thread.currentThread().getName() + " Start"); // thread sleeps for 4 secs Thread.sleep(4000); System.out.println(Thread.currentThread().getName() + " end"); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
创造ThreadExampleMain.java
ThreadExampleMain.java
package org.arpit.java2blog; public class ThreadExampleMain { public static void main(String args[]) { System.out.println("Main thread execution starts"); MyRunnable mr = new MyRunnable(); Thread t1 = new Thread(mr, "Thread 1"); Thread t2 = new Thread(mr, "Thread 2"); Thread t3 = new Thread(mr, "Thread 3"); t1.start(); // lets waits for t1 to die try { t1.join(); } catch (InterruptedException e) { e.printStackTrace(); } t2.start(); try { // lets waits for 1 sec or t2 to die which ever occurs first t2.join(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } t3.start(); // complete all threads before completing main thread try { t2.join(); t3.join(); } catch (InterruptedException e1) { e1.printStackTrace(); } System.out.println("Main thread execution ends"); } }
当您运行上述程序时,您将获得以下输出。
Main thread execution starts Thread 1 Start Thread 1 end Thread 2 Start Thread 3 Start Thread 2 end Thread 3 end Main thread execution ends
现在让我们分析输出。
Thread 1
t1
Thread 2
Thread 3
t2.join()
t3.join()
Java 线程连接方法保证发生在关系之前。
这意味着如果线程t1调用t2.join(),那么 t2 所做的所有更改对 t1 都是可见的。
这就是 Java 线程连接示例的全部内容。
原文链接:https://codingdict.com/