并发基础(七) Thread 类的重要的方法--sleep、yeild、join
2017-10-22 18:24
288 查看
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结束
相关文章推荐
- 并发编程(5)Thread类的使用(sleep/yield/join)
- 【Java之多线程(二)】(***重要***)Java多线程中常见方法的区别,如object.wait()和Thread.sleep()的区别等
- Java基础 thread的join方法
- Java并发07:Thread的基本方法(4)-Thread.sleep()、Object.wait()、notify()和notifyAll()
- 【java并发】基础(3)--sleep、join、yield
- java基础知识回顾之java Thread类学习(十一)--join方法的理解
- java Thread方法解析: sleep join wait notify notifyAll
- java线程基础巩固---分析Thread的join方法详细介绍,结合一个典型案例
- 【Java基础】并发 - 多线程 - Thread.join(..)
- Thread方法解释(join,sleep,yield,interrupt)
- Java并发05:Thread的基本方法(2)-join方法-线程插队
- Thread.sleep 和Object.join的使用
- Java多线程学习 (二) Thread的join()方法
- Java之Thread线程相关yield()、sleep()、wait()、join()、run和start区别详解
- Thread.join()方法的使用
- EasyDemo*Thread常见状态之sleep方法(on Github)
- python 基础 —— join() 方法
- Java 并发编程:线程间的协作(wait/notify/sleep/yield/join)
- Thread join方法
- Java Thread.join方法