1、Thread.sleep(long millis )

sleep( )是一个静态方法,让当前正在执行的线程休眠(暂停执行),而且在睡眠的过程是不释放资源的,保持着锁。
在睡眠的过程,可以被中断,注意抛出InterruptedException异常;

作用:

1、暂停当前线程一段时间;
2、让出CPU,特别是不想让高优先级的线程让出CPU给低优先级的线程

try {//单位是毫秒,睡眠1秒Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}

2、Thread.yeild()

同样也是一个静态方法,暂停当前正在执行的线程,线程由运行中状态进入就绪状态,重新与其他线程一起参与线程的调度。

作用:

线程让步,顾名思义,就是说当一个线程使用了这个方法之后,它就会把自己CPU执行的时间让掉,让自己或者其它的线程运行。但是,这种让步只对同优先级或者更高优先级的线程而言,同时,让步具有不确定性,当前线程也会参与调度,即有可能又被重新调度,那么就没有达到让出CPU的效果了。

3、Thread.join()

JDK中提供三个版本的join方法:

  • join( ):等待该线程终止。
  • join(long millis):等待该线程终止的时间最长为 millis 毫秒。超时为 0 意味着要一直等下去。
  • join(long millis, int nanos):等待该线程终止的时间最长为 millis 毫秒 + nanos 纳秒。

    作用:

    join方法的作用是父线程等待子线程执行完成后再执行,换句话说就是将异步执行的线程合并为同步的线程。

public static void main(String[] args) {Thread childThread = new Thread("childThread"){@Overridepublic void run() {int a = 1;for(int i=1;i<5;i++){a += i;}System.out.println("线程"+getName()+"结束,Count a = "+a);}};//线程启动childThread.start();try {//main线程要等待childThread线程的结束,才可以往下执行childThread.join();} catch (InterruptedException e) {e.printStackTrace();}System.out.println("线程"+Thread.currentThread().getName()+"结束");}

运行结果:

线程childThread结束,Count a = 11
线程main结束

出处:https://www.cnblogs.com/jinggod/p/8485169.html

并发基础(七):Thread 类的sleep()、yeild()、join()相关推荐

  1. Java并发编程:Thread类的使用

    为什么80%的码农都做不了架构师?>>>    Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学 ...

  2. 【并发编程】Thread类的详细介绍

    本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. Thread类是Java中实现多线程编程的基础类.本篇博客就来介绍下Thread ...

  3. 腾讯架构师理解的并发编程基石——Thread类的工作原理

    1. 开篇词 说到并发编程,可能大家脑海中的第一印象会是 Thread.多线程.JUC.线程池.ThreadLocal 等等内容.确实,并发编程是 Java 编程中不可或缺的一部分,掌握并发编程的核心 ...

  4. 02.并发编程(2)Thread类源码分析

    概述 在说线程之前先说下进程,进程和线程都是一个时间段的描述,是CPU工作时间段的描述. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一 ...

  5. Java并发编程之Thread类详解

    Thread类详解: 线程(Thread): 是操作系统进行调度的最小单位,Java中的线程是对操作系统线程的封装.本文从线程的创建到停止结合代码和具体实例分析一下关于java线程的一些常见问题. 线 ...

  6. Java Thread类的最终void join()方法与示例

    线程类最终void join() (Thread Class final void join()) This method is available in package java.lang.Thre ...

  7. Java多线程详解(深究Thread类)

    嗨喽-小伙伴们我又来了, 上一章咱介绍了线程同步,了解了解决线程安全的基本思想----"队列与锁".在前几章的介绍中,我们时不时地会使用到sleep()这个方法,知道它可以通过使线 ...

  8. Thread类源码剖析

    目录 1.引子 2.JVM线程状态 3.Thread常用方法 4.拓展点 一.引子 说来也有些汗颜,搞了几年java,忽然发现竟然没拜读过java.lang.Thread类源码,这次特地拿出来晒一晒. ...

  9. 多线程之Thread类

    Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...

  10. 并发基础篇(六):线程Thread类的start()方法和run()方法

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...

最新文章

  1. 12c adg添加数据文件报错处理ORA-01111
  2. 报错解决:TypeError: Object type class 'str' cannot be passed to C code
  3. SAP PM入门系列30 - IW39 Display Orders
  4. 树结构练习——排序二叉树的中序遍历
  5. datax调研及增量更新的思路
  6. c语言迪思卡尔算法,【论文】数字化的意匠_数字化设计与造型的认知学反思_谭峥.pdf...
  7. [html] const nums1 = [1, 2, 2, 1], nums2 = [2] 交集是什么?
  8. matlab的矩阵运算,MATLAB的矩阵运算
  9. vue build打包后提示:Tip: built files are meant to be served over an HTTP server
  10. Polish calculation
  11. 计算机云台示意图,智能语音识别云台转动模块电路设计—电路图天天读(70)...
  12. (二十四)资本资产定价模型
  13. Win10+Ubuntu18.04双系统安装配置教程(二)——磁盘分区
  14. 关于软件开发项目任务的横向分解和纵向分解
  15. android自动唤醒屏幕软件下载,抬手唤醒软件下载-抬手唤醒安卓版下载V1.6手机版-西西软件下载...
  16. 最短路:求最长最短路,求最短路的路径
  17. 基于SSM bootstrap的JSP MYSQL路路通汽车租赁系统
  18. 进制转化——十进制转二进制
  19. MediaPlayer
  20. 32位嵌入式微处理器(processor)一览

热门文章

  1. Busybox 设置登录用户名、密码
  2. stm32 IAP APP 相互跳转实验 (keil4 jlink STM32F407ZE
  3. Windows下配置IDEA开发环境
  4. 跨链(5)“蚂蚁区块链”之跨链系统框架
  5. Hyperledger Fabric VS Ethereum
  6. Web安全之代码执行漏洞
  7. linux dev_info,Linux命令集-xfs_info
  8. 数据库开篇简介整体常识
  9. TLS回调函数(2)
  10. python实时得到鼠标的位置