start: 用start方法来启动线程,真正实现了多线程运行,这时无需等待run方法体代码执行完毕而直接继续执行下面的代码。通过调用Thread类的start()方法来启动一个线程,这时此线程处于就绪(可运行)状态,并没有运行,一旦得到cpu时间片,就开始执行run()方法,这里方法 run()称为线程体,它包含了要执行的这个线程的内容,Run方法运行结束,此线程随即终止。

run: run()方法只是类的一个普通方法而已,如果直接调用Run方法,程序中依然只有主线程这一个线程,其程序执行路径还是只有一条,还是要顺序执行,还是要等待run方法体执行完毕后才可继续执行下面的代码,这样就没有达到写线程的目的。总结:调用start方法方可启动线程,而run方法只是thread的一个普通方法调用,还是在主线程里执行。这两个方法应该都比较熟悉,把需要并行处理的代码放在run()方法中,start()方法启动线程将自动调用 run()方法,这是由jvm的内存机制规定的。并且run()方法必须是public访问权限,返回值类型为void。

一、使用方式
join是Thread类的一个方法,启动线程后直接调用,例如:

Thread t = new AThread(); t.start(); t.join();

二、为什么要用join()方法
在很多情况下,主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。

Thread的start()和join()方法相关推荐

  1. Thread类中的join方法

    package charpter06; //类实现接口 public class Processor implements Runnable { // 重写接口方法 @Override public ...

  2. Thread 的join方法解释

    一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并行执行变为串行执行.具体看代码: public class JoinTest {public static void ...

  3. 【总结】C# 线程同步技术(一)之 Join 方法

    最近工作闲暇之际,翻阅了以前保存的电子书<C#多线程编程手册>,发现此书同步技术这块写的甚好,于是参考此书并结合实例,对同步技术做一下总结和分析,也算是读书笔记与心得体会吧,并与大家分享. ...

  4. java线程中join方法的简单讲解

    一.作用 Thread类中的join方法的主要作用就是同步,它可以使得线程之间的并发执行变为串行执行.具体看代码: public class Test {public static void main ...

  5. 多线程 join 方法

    多线程 join 方法 1.前言 本节对 join 方法进行深入的剖析,主要内容点如下: 了解 join 方法的作用,初步的理解 join 方法的使用带来的效果是学习本节内容的基础: 了解 join ...

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

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

  7. Thread源码分析之join方法

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

  8. Thread的join方法使用解析

    在C#中,Thread用的是比较多的,至少在windows form中使用是比较频繁的.一说到线程,可能马上就会想到界面和线程交互的头疼事,多线程之前数据共享,线程异步等等.这些当然是比较头疼的,只要 ...

  9. Java 中Thread的sleep、join、yield方法解析

    1.Thread中sleep方法作用是使当前线程等待,其他线程开始执行,如果有线程锁,sleep不会让出锁 没有加锁代码如下: public class SynchronizedSleepMethod ...

最新文章

  1. 002-请你回答一下单元测试、集成测试、系统测试、验收测试、回归测试这几步中最重要的是哪一步...
  2. 微软中国:Morro可能将不进入中国市场
  3. Android JNI入门第六篇——C调用Java
  4. [leetcode] 872. 叶子相似的树(周赛)
  5. Django 2.1.3 文档
  6. Windows 下 git的安装 + 可视化的小乌龟的安装
  7. Delphi源码网站
  8. 哲学家就餐问题python_无聊的哲学家进餐问题
  9. 阿里云acp考试简介,以及考试准备与攻略
  10. Aegisub彩虹字特效代码
  11. C++ std::numeric_limits<T>::max(),min()及lowest()
  12. 【封神台 - 掌控安全靶场】尤里的复仇 Ⅰ 小芳!一二三四五六七章
  13. 意识理论综述:众多竞争的意识理论如何相互关联?
  14. eclipse快捷键(增加一些4连组合快捷键)
  15. 李沐动手学深度学习_环境搭建
  16. Visual Studio Code修改HTML Snippets插件中默认模板内容
  17. C语言语句篇-------赋值语句
  18. 幂函数的c语言程序,C ++中的幂函数
  19. 2022腾讯云年终双十一活动攻略汇总!
  20. linux kernel.sem参数,kernel.sem参数的设置

热门文章

  1. 万分之二用百分之怎么表示_2020年元旦放假通知!周三放1天!不挪假连休,你打算怎么安排?...
  2. spring_有关Spring缓存性能的更多信息
  3. jdk安装教程_使用JDK 8流在包装对象的集合和包装对象的集合之间转换
  4. admm算法_「优化」交替方向乘子法(ADMM)的基本原理
  5. python重要吗-毫无基础,商英专业,Python真的有用吗?
  6. 自动化录制脚本java_自动化java+webdriver常用的一些脚本
  7. linux无法挂载移动硬盘6,FC6下挂载NTFS移动硬盘,无法读取
  8. 皮一皮:选第一个选项的人是咋想的?
  9. 冰岛试行四天工作制大获成功:每周缩短五小时,生产力没变!
  10. 存在多个不同注册中心的时候,如何平滑的统一注册中心?