线程等待 Join()方法
- Join()方法是让一个线程等待另一个线程的完成
下面看个例子:
package project11;
public class TestJoin extends Thread {
public void run() {
for(int i= 1;i<=10;i++)//线程循环10次输出
{
System.out.println(Thread.currentThread().getName()+"第"+i+"次运行");
}
System.out.println(Thread.currentThread().getName()+"运行结束");
}
public static void main(String [] args) { //main函数的主线程开始运行
System.err.println("主线程开始运行");
TestJoin tj = new TestJoin(); //创建线程类
tj.setName("线程1"); //给线程起名字
try {
long start = System.nanoTime();
tj.start();
tj.join(); //等待tj线程运行结束
long end = System.nanoTime();
System.out.println("耗时"+(end-start)/1000000+"毫秒");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("主线程运行结束");//main函数的主线程运行结束
}
}
- 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()方法的更多相关文章
- “全栈2019”Java多线程第七章:等待线程死亡join()方法详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java多 ...
- 多线程---其他方法 停止线程、守护线程、join方法
第三方停止线程: 原来是stop(),因为该方法有些问题,所以被interrupt()方法取代,它的用途跟机制是 当没有指定的方式让冻结的线程恢复到运行状态时,这时需要对冻结进行清除,强制让线程恢复到 ...
- java多线程之守护线程以及Join方法
版权声明:本文出自汪磊的博客,转载请务必注明出处. 一.守护线程概述及示例 守护线程就是为其它线程提供"守护"作用,说白了就是为其它线程服务的,比如GC线程. java程序中线程分 ...
- 线程的join()方法
官网描述 join public final void join() throws InterruptedException Waits for this thread to die. An invo ...
- Java中的后台线程和join方法
/*守护线程(后台线程):在一个进程中如果只剩下 了守护线程,那么守护线程也会死亡. 需求: 模拟QQ下载更新包. 一个线程默认都不是守护线程. */ public class Demo extend ...
- 43. 守护线程 和 join方法
1.守护线程(后台线程): 我们在使用一款软件的时候,有的软件会让我们在不知道的情况下下载一些东西,那么这个就是后台线程. 一般用于提高软件的下载量(也就是 ...
- 【转】线程join()方法的含义
在很多情况下,主线程生成并启动了子线程,如果子线程里要进行大量的耗时运算,主线程往往将于子线程之前结束,但是如果主线程处理完其它事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后 ...
- 线程的使用方法start run sleep join
今天回顾了Java的线程的一些知识 例1:下面代码存有详细的解释 主要是继承Thread类与实现Runnable接口 以及start()和run()方法 package com.date0607; / ...
- 线程join方法详解
执行逻辑:在当前代码块(比如main方法)中的线程A执行了join方法, 那么当代码块(main)执行到join方法时,会停止继续向下执行,一直到线程A执行完毕, main方法才会继续向下执行. 代码 ...
随机推荐
- cocos creator开发微信小游戏记录
先用cocoscreator实现游戏逻辑 在cocoscreator项目里可以调用微信小游戏api 在cocos里面判断小游戏的运行环境 if (cc.sys.platform === cc.sys. ...
- thread.event说明
Python中的threading.Event()操控多线程的过程有: - 定义事件:man_talk_event = threading.Event() - 创建线程,传入对应事件:t1 = thr ...
- Python - Learn Note (2)
Python注释 Python的注释以#开头,后面的文字直到行尾都算注释 Python基本数据类型 整数.浮点数(浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置 ...
- iOS笔记之网络
用POST方式上传数据时,数组怎么处理? NSError *error; NSData *jsonData = [NSJSONSerialization dataWithJSONObject:data ...
- 《Agile Web Development With Rails》读后感--rails基于web设计的best Practices
最近看完<Agile Web Development with Rails>一书,受益匪浅.书中先是用一个简单的web应用带你进入Rails的世界,然后在你大致熟悉之后,再带你了解Rail ...
- 【转】Selenium2 API详解
[转自]http://blog.csdn.net/wuxuehong0306/article/details/49762961 打开浏览器 Ø 打开firefox浏览器 WebDriver driv ...
- Android Studio 编译报错:Process 'command 'D:\SDK\AS\sdk\build-tools\23.0.0\aapt.exe'' finished with non-zero exit value 1
AGPBI: {"kind":"error","text":"No resource identifier found for a ...
- memcache+php实现页面访问的加速
一.什么是memcache memcache是目前主流的一个高性能的分布式内存对象缓存系统:它以key-value形式在内存中存储数据.由于数据缓存在内存中,所以相比操作DB而言,它不需要解析SQL. ...
- PyalgoTrade 计算权重平滑平均价(三)
本节介绍如何使用收盘价的SMA价格的策略 from pyalgotrade import strategy from pyalgotrade.barfeed import yahoofeed from ...
- 最新解决 Ubuntu16.04 和 win10 双系统时间同步问题 (设置为 UTC 时间)
最近在电脑上安装了 Ubuntu16.04 和 Win10 双系统, 开机后发现电脑的开机系统出现了问题,不知道怎么搞的总是会出现8个小时的误差,在网上查了好多文章发现网上的大部分方法都是比较过时的 ...