当前位置: 移动技术网 > IT编程>开发语言>Java > Java线程分析

Java线程分析

2019年03月01日  | 移动技术网IT编程  | 我要评论

诏安旅游景点大全,澳博娱乐亚洲首选288x,熊邦欣


一、java线程的生命周期中,存在几种状态。在thread类里有一个枚举类型state,定义了线程的几种状态
public enum state {
  new,
  runnable,
  blocked,
  waiting,
  timed_waiting,
  terminated;
}

 二、各状态含义

  1. new: 线程创建之后,但是还没有启动。这时候它的状态就是new
  2. runnable: java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu的使用权,此时处于就绪状态(ready)。就绪状态的线程在获得cpu时间片后变为运行中状态(running)
  3. blocked: 阻塞状态,等待锁的释放,比如线程a进入了一个synchronized方法,线程b也想进入这个方法,但是这个方法的锁已经被线程a获取了,这个时候线程b就处于blocked状态
  4. waiting: 等待状态,处于等待状态的线程是由于执行了3个方法中的任意方法。
    1. object的wait方法,并且没有使用timeout参数;
    2. thread的join方法,没有使用timeout参数
    3. locksupport的park方法。 处于waiting状态的线程会等待另外一个线程处理特殊的行为。
    再举个例子,如果一个线程调用了一个对象的wait方法,那么这个线程就会处于waiting状态直到另外一个线程调用这个对象的notify或者notifyall方法后才会解除这个状态
  5. timed_waiting: 有等待时间的等待状态,比如调用了以下几个方法中的任意方法,并且指定了等待时间,线程就会处于这个状态。
    1. thread.sleep方法
    2. object的wait方法,带有时间
    3. thread.join方法,带有时间
    4. locksupport的parknanos方法,带有时间
    5. locksupport的parkuntil方法,带有时间
  6. terminated: 线程中止的状态,这个线程已经完整地执行了它的任务

 三、线程的状态图

 

 

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网