并发基础(七):Thread 类的sleep()、yeild()、join()
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()相关推荐
- Java并发编程:Thread类的使用
为什么80%的码农都做不了架构师?>>> Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学 ...
- 【并发编程】Thread类的详细介绍
本博客系列是学习并发编程过程中的记录总结.由于文章比较多,写的时间也比较散,所以我整理了个目录贴(传送门),方便查阅. Thread类是Java中实现多线程编程的基础类.本篇博客就来介绍下Thread ...
- 腾讯架构师理解的并发编程基石——Thread类的工作原理
1. 开篇词 说到并发编程,可能大家脑海中的第一印象会是 Thread.多线程.JUC.线程池.ThreadLocal 等等内容.确实,并发编程是 Java 编程中不可或缺的一部分,掌握并发编程的核心 ...
- 02.并发编程(2)Thread类源码分析
概述 在说线程之前先说下进程,进程和线程都是一个时间段的描述,是CPU工作时间段的描述. 进程,是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竟争计算机系统资源的基本单位.每一 ...
- Java并发编程之Thread类详解
Thread类详解: 线程(Thread): 是操作系统进行调度的最小单位,Java中的线程是对操作系统线程的封装.本文从线程的创建到停止结合代码和具体实例分析一下关于java线程的一些常见问题. 线 ...
- Java Thread类的最终void join()方法与示例
线程类最终void join() (Thread Class final void join()) This method is available in package java.lang.Thre ...
- Java多线程详解(深究Thread类)
嗨喽-小伙伴们我又来了, 上一章咱介绍了线程同步,了解了解决线程安全的基本思想----"队列与锁".在前几章的介绍中,我们时不时地会使用到sleep()这个方法,知道它可以通过使线 ...
- Thread类源码剖析
目录 1.引子 2.JVM线程状态 3.Thread常用方法 4.拓展点 一.引子 说来也有些汗颜,搞了几年java,忽然发现竟然没拜读过java.lang.Thread类源码,这次特地拿出来晒一晒. ...
- 多线程之Thread类
Java并发编程:Thread类的使用 在前面2篇文章分别讲到了线程和进程的由来.以及如何在Java中怎么创建线程和进程.今天我们来学习一下Thread类,在学习Thread类之前,先介绍与线程相关知 ...
- 并发基础篇(六):线程Thread类的start()方法和run()方法
点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...
最新文章
- 12c adg添加数据文件报错处理ORA-01111
- 报错解决:TypeError: Object type class 'str' cannot be passed to C code
- SAP PM入门系列30 - IW39 Display Orders
- 树结构练习——排序二叉树的中序遍历
- datax调研及增量更新的思路
- c语言迪思卡尔算法,【论文】数字化的意匠_数字化设计与造型的认知学反思_谭峥.pdf...
- [html] const nums1 = [1, 2, 2, 1], nums2 = [2] 交集是什么?
- matlab的矩阵运算,MATLAB的矩阵运算
- vue build打包后提示:Tip: built files are meant to be served over an HTTP server
- Polish calculation
- 计算机云台示意图,智能语音识别云台转动模块电路设计—电路图天天读(70)...
- (二十四)资本资产定价模型
- Win10+Ubuntu18.04双系统安装配置教程(二)——磁盘分区
- 关于软件开发项目任务的横向分解和纵向分解
- android自动唤醒屏幕软件下载,抬手唤醒软件下载-抬手唤醒安卓版下载V1.6手机版-西西软件下载...
- 最短路:求最长最短路,求最短路的路径
- 基于SSM bootstrap的JSP MYSQL路路通汽车租赁系统
- 进制转化——十进制转二进制
- MediaPlayer
- 32位嵌入式微处理器(processor)一览