码迷,mamicode.com
首页 > 编程语言 > 详细

线程--概念

时间:2016-09-30 12:00:53      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

1. 首先是线程的sleep和yeld

sleep会阻塞当前线程,使所有优先级的线程都可以获取执行机会,但并不释放当前线程已经获得的锁

yeld,线程回到可执行状态,同优先级的线程才可获取执行机会,不释锁

还有两个经常放一块对比:

  • wait,它释放已经占有的锁,等待唤醒,notify唤醒后进入锁池等待获取锁标记,获取后变为可执行状态等待cpu调度执行
  • join,当前线程0获取另一个线程1对象的对象锁(synchronized),如果线程活着就wait(),直到线程结束(自动notify)

    join(1000)并不能真实表现当前线程等待1000毫秒,解释下,join(1000)后,

    线程0还没有获取线程1对象锁,如果有其它线程3获得线程1对象锁,线程0就阻塞在synchronized

2. 线程状态

public enum State {
    //线程刚创建
    NEW,
 
    //start,在JVM中正在运行的线程
    RUNNABLE,
 
    //线程处于阻塞状态,等待监视锁,可以重新进行同步代码块中执行
    BLOCKED,
 
    //调用join() wait()方法
WAITING,

//调用sleep(时间) join(时间) wait(时间)方法
TIMED_WAITING,

//线程执行完毕,已经退出
TERMINATED;
}

 技术分享

 

 

 参考文章:

1. java 线程的几种状态

2. Java编程体验:线程的7种状态及相互转换(图)

3. [Java并发编程]-线程的六种状态及其状态转换

 

线程--概念

标签:

原文地址:http://www.cnblogs.com/yhzh/p/5888878.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!