• Join()方法是让一个线程等待另一个线程的完成

    下面看个例子:
  1. package project11;
  2. public class TestJoin extends Thread {
  3. public void run() {
  4. for(int i= 1;i<=10;i++)//线程循环10次输出
  5. {
  6. System.out.println(Thread.currentThread().getName()+"第"+i+"次运行");
  7. }
  8. System.out.println(Thread.currentThread().getName()+"运行结束");
  9. }
  10. public static void main(String [] args) { //main函数的主线程开始运行
  11. System.err.println("主线程开始运行");
  12. TestJoin tj = new TestJoin(); //创建线程类
  13. tj.setName("线程1"); //给线程起名字
  14. try {
  15. long start = System.nanoTime();
  16. tj.start();
  17. tj.join(); //等待tj线程运行结束
  18. long end = System.nanoTime();
  19. System.out.println("耗时"+(end-start)/1000000+"毫秒");
  20. } catch (Exception e) {
  21. // TODO Auto-generated catch block
  22. e.printStackTrace();
  23. }
  24. System.out.println("主线程运行结束");//main函数的主线程运行结束
  25. }
  26. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

“`
从程序运行结果可以看出,main方法代表的主线程在建立TestJoin tj 这个线程对象后,调用t.start()来运行线程,并调用了tj.join()来等待线程tj的完成,在线程tj完成了10次字符输出并结束线程后,主线程才计算了线程tj的耗时,并输出字符然结束主线程的运行。

这样理解会简单一些
!!!!!把程序中的tj.join()这行程序注释掉,会发现
如果没有使用Join方法,那么主线程就会在tj线程还未运行结束前就结束。

线程等待 Join()方法的更多相关文章

  1. “全栈2019”Java多线程第七章:等待线程死亡join()方法详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...

  2. 多线程---其他方法 停止线程、守护线程、join方法

    第三方停止线程: 原来是stop(),因为该方法有些问题,所以被interrupt()方法取代,它的用途跟机制是 当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除,强制让线程恢复到 ...

  3. java多线程之守护线程以及Join方法

    版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.守护线程概述及示例 守护线程就是为其它线程提供"守护"作用,说白了就是为其它线程服务的,比如GC线程. java程序中线程分 ...

  4. 线程的join()方法

    官网描述 join public final void join() throws InterruptedException Waits for this thread to die. An invo ...

  5. Java中的后台线程和join方法

    /*守护线程(后台线程):在一个进程中如果只剩下 了守护线程,那么守护线程也会死亡. 需求: 模拟QQ下载更新包. 一个线程默认都不是守护线程. */ public class Demo extend ...

  6. 43. 守护线程 和 join方法

    1.守护线程(后台线程):            我们在使用一款软件的时候,有的软件会让我们在不知道的情况下下载一些东西,那么这个就是后台线程.            一般用于提高软件的下载量(也就是 ...

  7. 【转】线程join()方法的含义

    在很多情况下,主线程生成并启动了子线程,如果子线程里要进行大量的耗时运算,主线程往往将于子线程之前结束,但是如果主线程处理完其它事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后 ...

  8. 线程的使用方法start run sleep join

    今天回顾了Java的线程的一些知识 例1:下面代码存有详细的解释 主要是继承Thread类与实现Runnable接口 以及start()和run()方法 package com.date0607; / ...

  9. 线程join方法详解

    执行逻辑:在当前代码块(比如main方法)中的线程A执行了join方法, 那么当代码块(main)执行到join方法时,会停止继续向下执行,一直到线程A执行完毕, main方法才会继续向下执行. 代码 ...

随机推荐

  1. vue 脚手架(一,创建脚手架)

    本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 本文以转移至本人的个人博客,请多多关注! 经过一段时间对Vue的学习.觉得 ...

  2. Morgan logger

    var logger = require("morgan"); res.render = function(view, options, fn){ options = option ...

  3. c# 如何调用python脚本

    1.net4.5: http://www.jb51.net/article/84418.htm 2.net4.0: https://www.cnblogs.com/shiyingzheng/p/605 ...

  4. zoj-3329-期望/dp/方程优化

    One Person Game Time Limit: 1 Second      Memory Limit: 32768 KB      Special Judge There is a very ...

  5. c#在winform中用DataGridView实现分页效果

    public partial class Form11 : Form { public Form11() { InitializeComponent(); } private int Inum = 1 ...

  6. 本地RUN Page时报无法显示该网页

    经检查,是我本地安装了浏览器广告屏蔽插件引起的,关闭该插件即可.

  7. 235.236. Lowest Common Ancestor of a Binary (Search) Tree -- 最近公共祖先

    235. Lowest Common Ancestor of a Binary Search Tree Given a binary search tree (BST), find the lowes ...

  8. LINUX 操作记录到syslog,并发送到syslog服务器上

    首先配置命令记录到syslog中: 在客户端的/etc/bashrc  下添加: logger -p local3.info  \"`who am i` ================== ...

  9. vue兼容ie

    为了兼容IE github build/webpack.base.conf.js [vuex] vuex requires a Promise polyfill in this browser. // ...

  10. 一次SQLServer索引损坏问题的排查与修复

    线上库执行一项数据变更操作时,一直提示"出现错误 8646.请记录该错误和时间,并与您的系统管理员联系." 通过代码排查,最终确定是在执行某存储过程时触发了如下错误,并指明了位置是 ...