格式:以加入A线程为例

线程对象B.join()   无参数,则A线程一直暂停,直到B线程运行结束。

线程对象B.join(时间t)   有参数,则A线程每隔t时间暂停一次,直到B线程运行结束。

关于while(true)无限循环,参考https://blog.csdn.net/m1598306557/article/details/78176576

案例:线程A达到20%时,线程B加入

public class Demo extends JFrame {
private Thread threadA;//定义线程
private Thread threadB;
final JProgressBar progressBar1 = new JProgressBar();//进度条
final JProgressBar progressBar2 = new JProgressBar(); public Demo() {
setBounds(100, 100, 200, 100);
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
getContentPane().add(progressBar1, BorderLayout.NORTH);
getContentPane().add(progressBar2, BorderLayout.SOUTH);
progressBar1.setStringPainted(true);//显示数字
progressBar2.setStringPainted(true);
//使用匿名内部类实现Runnable接口
threadA = new Thread(new Runnable() {
int count = 0;//进度数据 public void run() {
while (true) {//无限循环,一般在不知道循环次数时使用
progressBar1.setValue(++count);
try {
Thread.sleep(100);//休眠0.1s
if (count==20){
threadB.join();//线程B加入,
}
} catch (InterruptedException e) {
e.printStackTrace();
}
if (count == 100)
break;
}
}
});
threadA.start(); threadB = new Thread(new Runnable() {
int count = 0;//进度数据 public void run() {
while (true) {
progressBar2.setValue(++count);
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
if (count == 100)
break;
}
}
});
threadB.start(); setVisible(true);
} public static void main(String[] args) {
new Demo();
}
}

线程的加入.join()的更多相关文章

  1. java线程学习之join方法

    join()方法表示一个线程要加入另一个线程,直到被加入的线程执行完毕. 这个概念不好理解的话看面这个例子 public class TestJoin { public static void mai ...

  2. 非分离线程未使用join函数例子:

    //非分离线程未使用join函数例子: #include<stdlib.h> #include<pthread.h> #include<stdio.h> #incl ...

  3. 线程中的join方法,与synchronized和wait()和notify()的关系

    什么时候要用join()方法? 1,join方法是Thread类中的方法,主线程执行完start()方法,线程就进入就绪状态,虚拟机最终会执行run方法进入运行状态.此时.主线程跳出start方法往下 ...

  4. 线程中的join()

    http://blog.itpub.net/31555134/viewspace-2221319/ 一直对join()方法不是很理解,在A线程中, B线程调用了join()方法,然后在内部实际是wai ...

  5. 3-等待线程终止的join方法

    等待线程终止的join方法 在项目实践中经常会遇到一个场景,就是需要等待某几件事完成之后才能继续往下执行,比如线程加载资源等等. package com.heiye.learn1; public cl ...

  6. 【多线程】线程强制执行 join()

    线程强制执行 join() Join合并线程,待此线程执行完成后,再执行其他线程,其他线程阻塞 : 可以想象成插队. 代码示例: /** * @Description 测试join方法 * @Auth ...

  7. 线程入门之join方法

    package com.thread; /** * <join:将某线程加入进来,相当于方法调用,也叫合并某个线程> * <功能详细描述> * * @author 95Yang ...

  8. 模拟做饭系统(java+线程中的join方法)

    (一)项目框架分析 妈妈要去做饭,发现没有酱油,让儿子去买酱油,然后回来做饭. 根据面向对象的思想,有两个对象,妈妈和儿子 主要有两个方法: (一)没有线程控制(即儿子没有买酱油回来妈妈就做好饭了)+ ...

  9. 实现ThreadFactory接口生成自定义的线程给Fork/Join框架

    Fork/Join框架是Java7中最有趣的特征之一.它是Executor和ExecutorService接口的一个实现,允许你执行Callable和Runnable任务而不用管理这些执行线程.这个执 ...

随机推荐

  1. react-创建react元素

    前言 react 元素,即JSX语法. const Nav, Profile; // 输入(JSX): const app = <Nav color="blue">&l ...

  2. HDU-6440-费马小定理

    亏我前几天还学数论呢...没有深入研究费马小定理这个东西...做事情一定要静下心来啊... 题目要求满足(m+n)^p=m^p+n^p,要你定义一个封闭的新的加法和乘法运算 我们知道费马小定理中有两种 ...

  3. D. Mysterious Crime

    链接 [http://codeforces.com/contest/1043/problem/D] 题意 给你一个m*n的矩阵(m<=10,n<=1e5), 每一行的数字是1到n里不同的数 ...

  4. 【实践报告】Linux实践二

    3.编译并安装内核与模块 sudo make bzImage –j3         编译内核 sudo make modules –j3         编译模块 sudo make modules ...

  5. 北京大学信息科学技术学院本科生课程体系课程大纲选登——计算机网络与WEB技术

  6. 06-java学习-方法的学习

    方法定义 方法类型 方法涉及的知识: 修饰符.返回类型,命名规则,参数列表 方法常见错误 方法概念的深入理解 为什么会有方法? 方法帮助解决哪些问题? 方法可以简化复杂问题的解决

  7. css3-弹性盒模型

    first <style> .box{width:1024px;height:100px; border:5px solid black; padding:10px; display:-w ...

  8. Bootstrap Validator使用特性,动态(Dynamic)添加的input的验证问题

    http://1000hz.github.io/bootstrap-validator/#validator-usage Validated fields By default, the valida ...

  9. 【转帖】MYSQL 8.0 忘记密码的简单处理。--init-file

    Copy From https://www.cnblogs.com/wangjiming/p/10363357.html mysql 不熟悉 但是感觉语法的确与oracle越来越像了. 感谢原作者 我 ...

  10. SLAM中的变换(旋转与位移)表示方法

    1.旋转矩阵 注:旋转矩阵标题下涉及到的SLAM均不包含位移. 根据同一点P在不同坐标系下e(e1,e2,e3)e'(e1',e2',e3')的坐标a(a1,a2,a3)a'(a1',a2',a3') ...