0009 Java 线程的生命周期【基础】

来源:互联网 发布:淘宝客服中心组织架构 编辑:程序博客网 时间:2024/05/21 19:27

前言:

在java中每new一个线程,jvm都是向操作系统请求new一个本地线程,此时操作系统会使用剩余的内存空间来为线程分配内存,而不是使用jvm的内存。这样,当操作系统的可用内存越少,则jvm可用创建的新线程也就越少。

生命周期:
新建-就绪-(阻塞)-运行--死亡   1)其中当用new 创建完一个线程对象后,该线程处于新建状态。   2)当线程对象调用了start()后,该线程处于就绪状态。   3)如果处于就绪状态的线程获得CPU时间片,开始执行run方法的线程执行体,该线程处于运行状态。   4)如果线程调用了sleep()或者调用了一个阻塞式IO方法等,该线程处于阻塞状态。   5)如果线程的run()执行完成或者抛出一个未捕获的异常等原因,该线程处于死亡状态。

 注意:

1、线程只有通过new Thread来创建,此时才会开辟线程所需要的堆空间。这个时候线程处于新建状态。新建状态指的是有一个Thread对象,但是并不是一个真正的线程。

2、实现Runnable的类必须通过new Thread(runnable)来创建一个线程。

3、当调用了线程的start()方法时才会为线程准备线程所需要的栈空间,此时线程从新建状态变成可运行状态(就绪状态)。调用start()方法之后如果该线程获得了执行的机会,其状态变成运行状态,其run()方法将被调用。

2、对Java的Thread或者Runnable来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。

 

0 0
原创粉丝点击