`

Join方法小结

 
阅读更多

 Join  方法的意思就是后面的线程要运行 ,只有调用join方法的这个线程is dead 或 超过指定的时间,才能执行;

public final void join() //只有当前线程isdead 后面的才能运行
 
public final synchronized void join(long millis) // 线程isdead or over  millis

 

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);// 如果把这里改成t1.join()那么就只能等到t1dead 才执行t2
        } 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());
    }
     
}

 output :

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

 

  

 

分享到:
评论

相关推荐

    MySQL中Nested-Loop Join算法小结

    MySQL中的Nested-Loop Join(NLJ)是一种基本的JOIN操作实现方式,主要用于处理两个或多个表之间的连接。NLJ的基本思想是逐行遍历一张表(称为外部表),然后对每一行与另一张表(称为内部表)进行匹配。这个过程...

    【MapReduce篇06】MapReduce之MapJoin和ReduceJoin1

    小结 MapReduce 之 MapJoin 和 ReduceJoin 是两种常见的 Join 操作,用于连接来自不同数据源的数据。MapJoin 可以减少数据传输量,提高计算效率,而 ReduceJoin 可以处理大量的数据。根据具体的业务需求和数据特点...

    SQL 外链接操作小结 inner join left join right join

    SQL 外链接操作小结 inner join left join right join SQL 外链接操作是关系型数据库管理系统中的一种基本操作,用于从多个表中检索数据。外链接操作可以分为三种:inner join、left join 和 right join。 inner ...

    SQL中inner join、outer join和cross join的区别

    #### 小结 - `INNER JOIN`用于获取两个表之间的交集,适用于需要精确匹配的情况。 - `OUTER JOIN`(左外联接、右外联接和全外联接)用于处理不完全匹配的情况,能够提供更全面的数据视图。 - `CROSS JOIN`用于生成...

    Python打包文件夹的方法小结(zip,tar,tar.gz等)

    ### Python打包文件夹的方法小结(zip, tar, tar.gz等) 在进行软件开发的过程中,我们经常需要将项目文件打包成一个归档文件,方便传输或者发布。Python 提供了多种方式来实现文件夹的打包,包括但不限于 `zip`, `...

    left join 过滤条件写在on后面和写在where 后面的区别

    #### 小结 通过以上示例可以看出,过滤条件放在`ON`子句中和放在`WHERE`子句中的区别在于: - **ON子句**:过滤条件会影响连接操作本身,即不满足条件的记录将完全不参与连接操作。 - **WHERE子句**:过滤条件只对...

    数据文件处理命令小结(tr,sort,cut,paste,join,uniq,split)

    ### 数据文件处理命令小结 #### 一、转换和删除重复命令——`tr` `tr` 命令主要用于字符转换或删除重复字符。它在Linux运维中非常实用,能够帮助用户快速修改文本文件中的字符。 ##### 命令格式 ``` tr [option] ...

    PowerShell String对象方法小结

    从之前的章节中,我们知道PowerShell将一切存储在对象中,那这些对象中包含了一系列中的称之为方法的指令。默认文本存储在String对象中,它包含了许多非常有用的处理文本的命令。例如,要确定一个文件的扩展名,可以...

    js中数组的常用方法小结

    join方法用于将数组中的所有元素连接成一个字符串。它接受一个可选参数作为分隔符,用于插入数组元素之间。如果未指定分隔符,默认使用逗号。例如,以下代码展示了如何使用join方法: ```javascript var arr1 = [1,...

    数据库知识小结

    【数据库知识小结】 在IT领域,数据库是一个至关重要的组成部分,尤其在数据管理和分析中扮演着核心角色。这里我们将深入探讨Oracle数据库以及一些常见的数据库理论和优化策略。 首先,让我们来了解一下数据库三...

    sql语句中join的用法和效率说明.doc

    可以看到,Left Join 语句返回了包括左表 A 中的所有记录和右表 B 中联结字段相等的记录。 2. Right Join Right Join 也称为右联接,它返回包括右表中的所有记录和左表中联结字段相等的记录。例如,使用 Right ...

    PLSQL优化规则小结

    标题:“PLSQL优化规则小结” 描述:本文总结了PL/SQL优化的若干规则,旨在提升数据库查询效率,是作者实践经验的提炼。 知识点详述: ### 1. 避免对索引列进行计算 - **原规则**:尽量避免在WHERE子句中对索引...

    python连接字符串的方法小结

    ### Python连接字符串的方法小结 在Python编程中,字符串连接是一项基本且常用的操作。无论是处理文本数据、构建复杂的用户界面还是生成动态内容,都需要用到字符串连接的技术。本篇文章将详细介绍几种常用的Python...

    数据库菜鸟不可不看 简单SQL语句小结

    接着,我们讨论几种精准查找的方法。`IN`关键词用于指定一个值的范围,例如`SELECT * FROM students WHERE native IN ('湖南', '四川')`将找出籍贯为湖南或四川的学生。`BETWEEN...AND`用来查询处于两个值之间的记录...

    JavaScript字符串处理常见操作方法小结

    在编程语言JavaScript中,字符串操作是开发过程中经常遇到的一个主题,本文对JavaScript字符串处理常见的操作方法进行一个全面的小结,内容包括字符串的合并、转换、截取、分割、获取字符和字符串反转等实用技巧。...

    PHP笔试题小结

    根据给定的文件信息,以下是对“PHP笔试题小结”中涉及的重要知识点的详细解析: ### 1. 表单中GET与POST提交方法的区别 GET和POST都是HTTP请求方法,用于向服务器发送数据。GET请求是通过URL参数传递数据,这使得...

Global site tag (gtag.js) - Google Analytics