多线程中的join总结笔记
join方法的原理
就是调用相应线程的wait方法进行等待操作的,假如线程1中调用了线程2的join方法,则相当于在线程1中调用了线程2的wait方法,当线程2执行完(或者到达等待时间),线程2会自动调用自身的notifyAll方法唤醒线程1,从而达到同步的目的。
例子
一、如线程1调用线程2的join方法,即线程2.join(0);(需要注意的是,jdk规定,join(0)的意思不是线程1等待线程2 零秒,而是线程1等待线程2无限时间,直到B线程执行完毕,即join(0)等价于join()。)
二、如线程1调用线程2的join方法,即线程2.join(3);(表示线程1等待线程2 三秒,三秒过后线程和线程并行执行)
join函数源码
public final synchronized void join(long millis)
throws InterruptedException {
long base = System.currentTimeMillis();
long now = 0; if (millis < 0) {
throw new IllegalArgumentException("timeout value is negative");
} if (millis == 0) {
while (isAlive()) {
wait(0);
}
} else {
while (isAlive()) {
long delay = millis - now;
if (delay <= 0) {
break;
}
wait(delay);
now = System.currentTimeMillis() - base;
}
}
}
多线程中的join总结笔记的更多相关文章
- Java多线程中的join()方法
		一.join()方法介绍 join() 定义在Thread.java中.join()方法把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程.比如在线程B中调用了线程A的join( ... 
- Java并发编程--多线程中的join方法详解
		Java Thread中, join()方法主要是让调用该方法的thread在完成run方法里面的部分后, 再执行join()方法后面的代码 例如:定义一个People类,run方法是输出姓名年龄. ... 
- thread.join函数,java多线程中的join函数解析
		join函数的作用,是让当前线程等待,直到调用join()的 线程结束或者等到一段时间,我们来看以下代码 package mian; public class simpleplela { static ... 
- 浅谈Java多线程中的join方法
		先上代码 新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String ... 
- Java多线程中的join方法
		新建一个Thread,代码如下: package com.thread.test; public class MyThread extends Thread { private String name ... 
- java多线程中关于join方法的使用
		Thread的非静态方法join()让一个线程B"加入"到另外一个线程A的尾部.在A执行完毕之前,B不能工作.例如: Thread t = new MyThread ... 
- Python多线程中阻塞(join)与锁(Lock)的使用误区
		参考资料:https://blog.csdn.net/cd_xuyue/article/details/52052893 1使用两个循环分别处理start和join函数.即可实现并发. threads ... 
- 多线程编程中的join函数
		# coding: utf-8 # 测试多线程中join的功能 import threading, time def doWaiting(): print 'start waiting1: ' + t ... 
- 【C/C++开发】多线程编程中的join函数
		多线程编程中的join函数 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 # coding: utf-8 # 测试多线程中join的 ... 
随机推荐
- UE4 几个好用的插件和Wiki教程
			转自:http://blog.csdn.net/u014532636/article/details/72729881 https://github.com/ue4plugins/LoadingScr ... 
- RAC集群安装校验输出信息
			RAC集群安装校验输出信息 作者:Eric 微信:loveoracle11g [grid@rac-node1 grid]$ [grid@rac-node1 grid]$ ./runcluvfy.sh ... 
- keras的LSTM函数详解
			keras.layers.recurrent.LSTM(units, activation='tanh', recurrent_activation='hard_sigmoid', use_bias= ... 
- Linux下安装与卸载anaconda
			安装:到安装文件夹的目录下输入 bash Anaconda3-4.1.1-Linux-x86_64.sh 卸载:输入 
- TF-IDF算法原理
			原文:https://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html TF-IDF(term frequency–inverse ... 
- CentOS7 安装kylin2.6.0集群
			1. 环境准备 zookeeper3.4.12 mysql5.7 hive2.3.4 hadoop2.7.3 JDK1.8 hbase1.3.3 2. 集群规划 ip地址 机器名 角色 192.168 ... 
- make install 时指定安装路径
			The make install target dir is representationed by var : DESTDIR, if we set this var to the locati ... 
- c#语言函数
			class Program {访问修饰符 函数名(参数1,参数2){ 函数体 return 返回值} 无参数,无返回值 public static void abc() ... 
- ctags使用
			1:安装ctags sudo apt-get install exuberant-ctags ctags --help 2:建立源码之间的组织关系: 1:ctags ./*.c -R 生成tags文件 ... 
- solr 打分和排序机制(转载)
			以下来自solr in action. 包含: 词项频次.查询词项出现在当前查询文档中的次数. 反向文档频次.查询词项出现在所有文档总的次数. 此项权重. 标准化因子: 字段规范: 文档权重. 字段权 ... 
