join作用是让其他线程变为等待,    t1.join();// 让其他线程变为等待,直到当前t1线程执行完毕,才释放。

thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。

例子:

public class MyThread implements Runnable {@Overridepublic void run() {for (int i = 0; i < 5; i++) {System.out.println(Thread.currentThread().getName() + " 执行了");}}
}
public class Test6 {/*** 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行* @param args*/public static void main(String[] args) throws Exception {MyThread m = new MyThread();Thread m1 = new Thread(m, "m1");Thread m2 = new Thread(m, "m2");Thread m3 = new Thread(m, "m3");m1.start();m1.join();m2.start();m2.join();m3.start();m3.join();}
}

结果:

如果不使用join方法:

结果:

优先级

现代操作系统基本采用时分的形式调度运行的线程,线程分配得到的时间片的多少决定了线程使用处理器资源的多少,也对应了线程优先级这个概念。在JAVA线程中,通过一个int priority来控制优先级,范围为1-10,其中10最高,默认值为5。下面是源码(基于1.8)中关于priority的一些量和方法。

class PrioritytThread implements Runnable {public void run() {for (int i = 0; i < 100; i++) {System.out.println(Thread.currentThread().toString() + "---i:" + i);}}
}/*** * @classDesc: 功能描述:(Join方法)*/
public class ThreadDemo4 {public static void main(String[] args) {PrioritytThread prioritytThread = new PrioritytThread();Thread t1 = new Thread(prioritytThread);Thread t2 = new Thread(prioritytThread);t1.start();// 注意设置了优先级, 不代表每次都一定会被执行。 只是CPU调度会有限分配t1.setPriority(10);t2.start();}}

Yield方法

Thread.yield()方法的作用:暂停当前正在执行的线程,并执行其他线程。(可能没有效果)

yield()让当前正在运行的线程回到可运行状态,以允许具有相同优先级的其他线程获得运行的机会。因此使用yield()的目的是让具有相同优先级的线程之间能够适当的轮换执行。但是,实际中无法保证yield()达到让步的目的,因为,让步的线程可能被线程调度程序再次选中。

结论:大多数情况下,yield()将导致线程从运行状态转到可运行状态,但有可能没有效果。

join()方法作用相关推荐

  1. python join_Python中join()方法的用法

    Python中join()方法的主要作用是以特定的字符或字符串作为分隔符(字符串)将若干字符串拼接在一起.其作用的对象可以是单独的一个字符串,也可以是一个字符串元组,字符串列表.字符串集合或字符串字典 ...

  2. join()方法的作用

    让调用该方法的线程在执行完run()方法后,再执行join()方法后面的代码. 即,将两个线程合并,实现同步的功能.具体,可以通过线程A的join()方法来等待线程A的结束,或者使用线程A的join( ...

  3. 线程的join方法的作用是什么?

    等待该线程终止. 相当于等待该线程执行完,才去继续执行,和同步顺序执行差不多. 为什么需要join方法? 举个例子,现在有 A, B, C 三件事情,只有做完 A 和 B 才能去做 C,而 A 和 B ...

  4. java 线程 thread.join_java线程Thread的join方法。

    1,方法的作用: 父线程等待子线程的执行. 如果是join或者join(0),即等待时长是0,父线程就会一直等到子线程执行结束, 如果是join(time),即等待时长是time数值,那父线程实际等待 ...

  5. java多线程中的join方法详解

    java多线程中的join方法详解 方法Join是干啥用的? 简单回答,同步,如何同步? 怎么实现的? 下面将逐个回答. 自从接触Java多线程,一直对Join理解不了.JDK是这样说的:join p ...

  6. java thread join_java中thread的join方法为什么能让线程插队

    在面试中经常会遇到这样的问题:在主线程中有两个子线程,如果能让着两个子线程能顺序的执行? 答案自然是用join来使得两个线程顺序执行,先看一下具体代码 public class ThreadOfJoi ...

  7. 线程状态以及sleep yield wait join方法

    前言 在日常的开发过程中,我们通过会使用Thread.sleep模拟一个耗时的任务执行过程. 在深入理解这四个方法之前,首先对线程的状态进行理解阐述. 线程概念 线程是操作系统执行任务的基本单位,处理 ...

  8. JAVA多线程中join()方法的详细分析

    虽然关于讨论线程join()方法的博客已经非常极其特别多了,但是前几天我有一个困惑却没有能够得到详细解释,就是当系统中正在运行多个线程时,join()到底是暂停了哪些线程,大部分博客给的例子看起来都像 ...

  9. Thread源码分析之join方法

    2019独角兽企业重金招聘Python工程师标准>>> join方法示例1 源码 import java.util.concurrent.TimeUnit;public class ...

最新文章

  1. 钉钉需要什么java知识_Java钉钉开发_01_开发前的准备
  2. 【错误记录】Git 使用报错 ( git: ‘switch‘ is not a git command. See ‘git --help‘. )
  3. Vue学习之路1 小白起步
  4. 1.10 理解人的表现-深度学习第三课《结构化机器学习项目》-Stanford吴恩达教授
  5. UGUI组件之Canvas 组件简单笔记
  6. 窗体间传值和窗体间互操作
  7. Why manually change will not trigger text determination
  8. javafx应用启动自动执行函数_JavaFx:Application start方法中的异常
  9. 填错银行卡号导致放款失败?小心中招钓鱼网贷
  10. 【POJ3630】Phone List(字典树)
  11. visualbox 网页服务器,无法看到VirtualBox NGINX站点
  12. centos 中如何将python更新到最新的版本
  13. 网站克隆:setoolkit社工软件
  14. 股票买卖明细接口是怎样实现查询交易数据的?
  15. MySQL倒序查询最后三条语句_MySQL 中 一条 order by index limit 语句的分析
  16. 为什么苹果蓝牙耳机连上还是公放_如何测试蓝牙设备的延时
  17. 自学Python之字符串总结
  18. selenium实现后台24小时平均温、全国降水量自动上传工作
  19. 【Cinemachine】VirtualCamera虚拟相机详解(一)
  20. Asp RequiredFieldValidator,CompareValidator简单使用

热门文章

  1. 打造自己的图片加载缓存库(Picasso OR Glide)
  2. Pytorch 官方文档教程整理 (一)
  3. Ubuntu-内核安装及版本切换
  4. 数字图像处理matlab作业,数字图像处理matlab大作业
  5. 护士岗前培训心得范文
  6. 如何生成ssh公钥(ssh-keygen)
  7. serverlet 区别_filter, serverlet, listener 区别
  8. smokeping图表解释
  9. Java工程师学习路线
  10. 写一个商品信息管理系统的选题背景与意义