0009 Java 线程的生命周期【基础】
2014-12-04 13:51
399 查看
前言:
在java中每new一个线程,jvm都是向操作系统请求new一个本地线程,此时操作系统会使用剩余的内存空间来为线程分配内存,而不是使用jvm的内存。这样,当操作系统的可用内存越少,则jvm可用创建的新线程也就越少。
注意:
1、线程只有通过new
Thread来创建,此时才会开辟线程所需要的堆空间。这个时候线程处于新建状态。新建状态指的是有一个Thread对象,但是并不是一个真正的线程。
2、实现Runnable的类必须通过new Thread(runnable)来创建一个线程。
3、当调用了线程的start()方法时才会为线程准备线程所需要的栈空间,此时线程从新建状态变成可运行状态(就绪状态)。调用start()方法之后如果该线程获得了执行的机会,其状态变成运行状态,其run()方法将被调用。
2、对Java的Thread或者Runnable来说,run()方法没有任何特别之处。像main()方法一样,它只是新线程知道调用的方法名称(和签名)。因此,在Runnable上或者Thread上调用run方法是合法的。但并不启动新的线程。
在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方法是合法的。但并不启动新的线程。
相关文章推荐
- JAVA基础再回首(二十四)——多线程的概述、实现方式、线程控制、生命周期、多线程程序练习、安全问题的解决
- 线程的生命周期--Java基础069
- JAVA基础知识之多线程——线程的生命周期(状态)
- Java_基础—线程组和线程池的概述和使用以及线程的生命周期
- JAVA基础初探(十四)多线程(线程与进程概述、线程的实现、状态、常用方法、优先级、生命周期)
- 黑马程序员——JAVA基础——线程---概述,创建、生命周期,控制,同步,线程通信
- java基础24 线程、多线程及线程的生命周期(Thread)
- java线程基础巩固---线程生命周期以及start方法源码剖析
- java线程基础巩固---Thread中断Interrupt方法学习&采用优雅的方式结束线程生命周期
- java基础--23.线程的控制与生命周期
- 【Java基础】:线程的生命周期
- Java基础----线程生命周期
- Java线程基础1
- Java多线程初学者指南(4):线程的生命周期
- 实训 Java基础知识---流,线程,网络编程
- Java多线程初学者指南(4):线程的生命周期
- Java 101之线程基础
- java Thread:浅谈控制线程生命周期的方式
- 转载:Java多线程初学者指南(4):线程的生命周期
- Java多线程初学者指南(4):线程的生命周期