join线程

在某个线程的执行流中调用其他线程的join()方法时,调用线程将被阻塞,直到被join()方法加入的线程完成为止。

join()方法有三种重载形式:

  • join():等待被join的线程执行完成;
  • join(long millis):等待被join线程执行时间最长为millis毫秒。如在millis毫秒内,被join的线程未执行完成,则不再继续等待。
  • join(long millis,  int nanos):等待被join的线程执行时间为millis毫秒+nanos微秒。

后台线程

后台线程(Deamon Thread)又被称为“精灵线程”或“守护线程”。JVM的垃圾回收线程就是典型的后台线程。

后台线程主要特征:如果所有前台线程都死亡,后台线程会自动死亡。

关于后台线程:

  • 调用Thread对象的setDeamon(true)可以将指定线程设置成后台线程;
  • setDeamon(true)必须在start()方法之前调用,否则会引发IllegalThreadStateException异常;
  • Thread类提供了isDeamon()方法判断是否是后台线程;
  • 前台线程创建的子线程默认是前台线程,后台线程创建的子线程默认是后台线程。

线程睡眠

Thread类的Sleep()方法可以使正在执行的线程暂停一段时间,并进入阻塞状态。

在线程sleep时间段内,即使系统中没有其它可运行的线程,处于sleep中的线程也不会运行。

线程让步

yield()也是Thread类的一个方法。同sleep()类似,它也可以让一个线程暂停。但是,它不会阻塞线程,而是直接让线程进入就绪状态,重新等待系统调度器的调度。

实际上,当某个线程调用了yield()方法后,只有优先级与当前线程相同或高于当前线程的处于就绪状态的其他线程才能获得执行的机会。

sleep()和yield()的区别:

  • sleep暂停线程后,会给其它线程执行机会,不会理会其他线程的优先级;yield暂停线程后,只会给优先级相同或优先级更高的其他线程机会;
  • sleep会将线程转入阻塞状态;yield会将线程直接转入就绪状态;
  • sleep方法跑出了InterruptedException,yield方法没有抛出任何异常;
  • sleep方法移植性更好。

线程优先级

每个线程执行时都有一定的优先级,优先级高的线程获得更多的执行机会,优先级低的线程获得较少的执行机会。

Thread提供了setPriority和getPriority方法来设置和获取线程优先级。

转载于:https://www.cnblogs.com/amunote/p/4104628.html

Java多线程 - 控制线程相关推荐

  1. Java多线程之线程池详解

    Java多线程之线程池详解 目录: 线程池使用及优势 线程池3个常用方式 线程池7大参数深入介绍 线程池底层工作原理 1. 线程池使用及优势 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务 ...

  2. java多线程与线程间通信

    转自(http://blog.csdn.net/jerrying0203/article/details/45563947) 本文学习并总结java多线程与线程间通信的原理和方法,内容涉及java线程 ...

  3. 初学Java多线程:线程简介

     Java多线程初学者指南系列教程http://developer.51cto.com/art/200911/162925.htm 初学Java多线程:线程简介 2009-06-29 17:49 ...

  4. java多线程及线程池使用

    Java多线程及线程池的使用 Java多线程 一.Java多线程涉及的包和类 二.Java创建多线程的方式 三.Java线程池 1. 创建线程池ThreadPoolExecutor的7个参数 2. 线 ...

  5. Java多线程与线程并发库高级应用笔记

    以下内容是学习张老师Java多线程与线程并发库高级应用时所做的笔记,很有用 网络编辑器直接复制Word文档排版有点乱,提供原始文件下载 先看源文件概貌 张孝祥_Java多线程与并发库高级应用 [视频介 ...

  6. Java多线程之线程同步机制(锁,线程池等等)

    Java多线程之线程同步机制 一.概念 1.并发 2.起因 3.缺点 二.三大不安全案例 1.样例一(模拟买票场景) 2.样例二(模拟取钱场景) 3.样例三(模拟集合) 三.同步方法及同步块 1.同步 ...

  7. java多线程之线程本地数据ThreadLocal

    layout: post title: "java多线程之线程本地数据ThreadLocal" subtitle: " "每个线程都有自己的数据,互不干扰.&q ...

  8. Java多线程02(线程安全、线程同步、等待唤醒机制)

    Java多线程2(线程安全.线程同步.等待唤醒机制.单例设计模式) 1.线程安全 如果有多个线程在同时运行,而这些线程可能会同时运行这段代码.程序每次运行结果和单线程运行的结果是一样的,而且其他的变量 ...

  9. Java多线程之线程池配置合理线程数

    Java多线程之线程池配置合理线程数 目录 代码查看公司服务器或阿里云是几核的 合理线程数配置之CPU密集型 合理线程数配置之IO密集型 1. 代码查看公司服务器或阿里云是几核的 要合理配置线程数首先 ...

最新文章

  1. 处理器解决物联网和人工智能的融合
  2. python itertools product函数
  3. mysql光标不见了_mysql创建光标失败
  4. Lesson 1:单线程 Socket Communications(一)
  5. 机器学习分类与性能度量
  6. vs2005菜单:工具-选项-环境
  7. python做excel自动化-python操作excel让工作自动化
  8. 个股打板机会:国民技术(实战)
  9. Java中涉及线程和并发相关的内容
  10. 学生考勤及行为管理系统_高校学生考勤管理系统
  11. 前端主流IDE快捷语法
  12. 一个开源的网页画板,真的太方便了
  13. 八岁时我弄丢长命锁,七年后他说保我长命无忧
  14. 如何获取QQ邮箱授权码?
  15. 华为手机微信无法连接到服务器1-500,Wi-Fi 6 路由器买不起?华为新品路由 500 元不到就能买...
  16. sql语句查询某天、某周、某月、某年的数据
  17. Javaweb安全——Weblogic反序列化漏洞(一)
  18. 创建SQL约束的方法
  19. JAVA语言考试系统的设计与实现(论文+源代码+文献综述+外文翻译+开题报告)
  20. 被裁员?这是上帝为你开了一扇窗,你知道吗?

热门文章

  1. HttpClient 中文官方教程----第一章基础知识-只收录,未测试
  2. 面向对象笔记2 原型链 解释
  3. 软件项目技术点(21)——自动保存和恢复
  4. DotNetBar的使用—(界面风格)
  5. Ruiy自我识人做事领悟录ing
  6. MapReduce实战--倒排索引
  7. 5款非常好用的前端在线编辑器推荐
  8. 新建表维护程序SM30
  9. 周立波贼经典的话11-20
  10. Linux 操作系统原理 — cgroups 进程资源配额与管理