zoukankan      html  css  js  c++  java
  • 加入一个线程

    一个线程X可以在其他线程Y之上调用join()方法,其效果是X等待一段时间直到第二个线程Y结束才继续执行。如果某个线程在另一个线程t上调用t.join(),此线程将被挂起,直到目标线程t结束才恢复。
    也可以在调用join()时带上一个超时参数(单位可以是毫秒,或者毫秒和纳秒),这样如果目标线程在这段时间到期时还没有结束的话,join方法总能返回。
    对join方法的调用可以被中断,做法是在调用线程上调用interrupt方法,这时需要用到try-catch语句。——《Java编程思想》
     
    调用谁(线程A)的join方法,就要等谁(A)执行结束。
     
    比喻解析:
    一般情况    
        假如我开车在路上兜风,经过路边一家店,发现我的朋友在店里,他说他要跟我一块兜风(他调用的他的join方法),我答应了。不过他点了一杯奶茶,要等一会儿。所以我的车就停在原地了,没有继续向前跑。(我要等待它完成)等到他拿到奶茶,上车后,我就继续向前开。(我继续执行我的任务)
        
    这里,我和他都是线程,我是线程A,他是线程B。我的任务是开车兜风,而他的任务是等待奶茶完成。
     
    超时情况
        他说要等奶茶做好,我说“我可没那么多时间,我给你3分钟”,他答应了。但是过了3分钟,他奶茶还是没好。我不耐烦,就走了(继续执行我的任务)
     
    打断情况
        他说等奶茶做好就上车,我就在原地等。突然他接到一个电话,他的组长大发雷霆,叫他马上回公司,他写的代码有问题。然后他对我说“完了,我现在要马上回公司。对不住啊”(他调用了他的interrupt方法)。我骂了一句“艹”,然后继续向前开(继续执行我的任务)。他呢,则奶茶都没来得及拿(他自己的任务也没完成),就会屁颠屁颠地回公司了。
  • 相关阅读:
    汇编10:CALL和RET指令
    汇编09:转移指令的原理
    汇编08:数据处理的两个基本问题
    汇编07:定位内存地址的方法
    汇编06:包含多个段的程序
    汇编05:[BX]和loop指令
    汇编04:第一个汇编程序
    汇编03:寄存器
    C#版的mongodb最新的官方驱动2.4.0版本
    如何教你看懂复杂的正则表达式
  • 原文地址:https://www.cnblogs.com/longfurcat/p/9483895.html
Copyright © 2011-2022 走看看