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方法:

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

    作用:

    join方法的作用是父线程等待子线程执行完成后再执行,换句话说就是将异步执行的线程合并为同步的线程。
public static void main(String[] args) {

	Thread childThread = new Thread("childThread"){
@Override
public 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结束

并发基础(七) Thread 类的sleep()、yeild()、join()的更多相关文章

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

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

  2. 【转】Java并发编程:Thread类的使用

    一.线程的状态 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于对Thread类中的方法的理解. 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程包括以 ...

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

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

  4. 并发编程之 Thread 类过期方法和常用方法

    前言 在 Java 刚诞生时,Thread 类就已经有了很多方法,但这些方法由于一些原因(有一些明显的bug或者设计不合理)有些已经废弃了,但是他们的方法名却是非常的好,真的是浪费.我们在进行并发必编 ...

  5. Java 并发:学习Thread 类

    Java 中 Thread类 的各种操作与线程的生命周期密不可分,了解线程的生命周期有助于对Thread类中的各方法的理解.一般来说,线程从最初的创建到最终的消亡,要经历创建.就绪.运行.阻塞 和 消 ...

  6. Java并发编程:Thread类的使用介绍

    在学习Thread类之前,先介绍与线程相关知识:线程的几种状态.上下文切换,然后接着介绍Thread类中的方法的具体使用. 以下是本文的目录大纲: 一.线程的状态 二.上下文切换 三.Thread类中 ...

  7. Java并发编程:Thread类的使用(转载)

    一:线程的状态: 在正式学习Thread类中的具体方法之前,我们先来了解一下线程有哪些状态,这个将会有助于后面对Thread类中的方法的理解. 线程从创建到最终的消亡,要经历若干个状态.一般来说,线程 ...

  8. 【Java_多线程并发编程】基础篇—Thread类中start()和run()方法的区别

    1. start() 和 run()的区别说明 start()方法: 它会启动一个新线程,并将其添加到线程池中,待其获得CPU资源时会执行run()方法,start()不能被重复调用. run()方法 ...

  9. Java并发基础07. ThreadLocal类以及应用技巧

    在前面的文章(6. 线程范围内共享数据)总结了一下,线程范围内的数据共享问题,即定义一个 Map,将当前线程名称和线程中的数据以键值对的形式存到 Map 中,然后在当前线程中使用数据的时候就可以根据当 ...

  10. 【java基础】Thread类之join方法

随机推荐

  1. DBWR进程

    --查询dbwr进程号 select pname,spid from v$process where pname like 'DBW%'; PNAME SPID----- -------------- ...

  2. linux fdisk tf卡分区操作解析说明

    /***************************************************************************** * linux fdisk tf卡分区操作 ...

  3. Unity 3D中 Ulua-UGUI简单的Demo——热更新的具体流程、使用说明

    Ulua热更新具体流程.使用说明 本文提供全流程,中文翻译.Chinar坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) 1 -- 未完 1 -- ...

  4. mac 常用开发软件列表

    toolbox app jetbrains系开发工具箱,包含了phpstorm idea等开发工具 Postman 接口调试工具,有插件版和单独的app两种.类似paw Sublime 文本编辑器,类 ...

  5. JPQL详解

    JPA在说jpql之前必须要说一下什么是JPA,否则在后续学习的时候,你会弄混的.JPA是一种规范,什么是规范呢,规范就是一个钥匙可以开这把锁.一般对于规范来说我们都是用接口,如果有人要我们则实现我们 ...

  6. 浏览器通过http协议通过nginx访问ftp服务器上的文件

    1.修改nginx配置文件 2.修改nginx默认目录为ftp默认目录 3.修改成自定义路径后,并修改此目录第一行,修改为root或是nginx用户 4.重新加载 cd /usr/local/ngin ...

  7. FastAdmin 开发第一天:了解 FastAdmin 框架

    了解 FastAdmin 框架 后端组件 ThinkPHP 5 EasyWeChat qr-code 前端组件 AdminLTE bootstrap bootstrap-table jquery la ...

  8. 求幂pow()

    pow(x, n)  求x的n次方. 最简单的方法便是计算n个x相乘 public static double pow(double x, int n) { if (n == 0) return 1; ...

  9. go get中的...

    go get命令是go自带的包下载工具. 如果配置了GOPATH,下载的文件放置于GOPATH/src下面 例如 $ go get github.com/garyburd/redigo/redis $ ...

  10. ionic使用常见问题(八)——PHP无法获取$http的post数据

    一个简单的post请求 $http.post('do-submit.php',myData) .success(function(){ // some code });   可是,用angularjs ...