本篇文章给大家带来的内容是关于java线程的生命周期的介绍(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。
一、线程的生命周期
进程与线程一样,都具有一定的生命周期,线程的生命周期包括四个状态:创建状态、就绪状态、阻塞状态、死亡状态。
1.创建状态
1)是指使用new实例化一个线程对象,但该线程对象还未使用start()方法启动线程这个阶段,该阶段只在内存的堆中为该对象的实例变量分配了内存空间,但线程还无法参与抢夺CPU的使用权;
立即学习“Java免费学习笔记(深入)”;
2)创建完毕线程对象后,启动该线程对象的是start()方法,而不是run()方法。
2.就绪状态
1)是指一个线程对象使用start()方法后到运行完run()方法的这个阶段,线程一旦就进入就绪阶段,Java虚拟机为该线程创建方法的调用栈和计数器等;
2)在某一单位时间(时间片)内,CPU只能运行一个线程,一但一个线程拥有了CPU的使用权,则该线程也可称为正在运行状态;
3)凡是处于就绪状态的线程都被视为活动的,可以使用isAlive()方法测试线程是否处于就绪状态,使用activeCount()查询当前线程所在线程池的活动线程数;
4)处于就绪状态的线程并不是运行状态,在以前的计算机很多都是单处理器的,要在同一时刻运行所有处于就绪状态的线程是不可能的,Java通过一些调度算法来保证这些线程共享使用处理器(如时间片轮转算法、独占算法等)。
3.阻塞状态:
1)阻塞状态包含四种状态(睡眠状态、阻塞状态、挂起状态、等待状态),一般来说,阻塞状态和就绪状态可以相互切换的;
每个应用程序都要使用数据,Android应用程序也不例外,Android使用开源的、与操作系统无关的SQL数据库--SQLite,本文介绍的就是如何为你的Android应用程序创建和操作SQLite数据库。 数据库支持每个应用程序无论大小的生命线,除非你的应用程序只处理简单的数据,那么就需要一个数据库系统存储你的结构化数据,Android使用SQLite数据库,它是一个开源的、支持多操作系统的SQL数据库,在许多领域广泛使用,如Mozilla FireFox就是使用SQLite来存储配置数据的,iPhon
0
2)使用sleep()方法可以线程进入睡眠状态,让其他进程得到运行机会,但是用sleep方法必须捕获InterruptedExecption异常;
3)使用suspend方法可以挂起线程(jdk1.2后已过时)、使用wait方法使线程进入等待状态(后面有一随笔会专门写)、使用I/O中断让线程进入阻塞状态。
4.死亡状态:
1)一旦线程运行完run方法,线程即进入死亡状态,Java虚拟机会销毁处于死亡状态的线程对象所占用的系统资源;
2)线程执行时遇到一个未捕获的异常,线程会被终止并进入死亡状态;调用stop方法也可以让线程进入死亡状态,但是容易造成死锁,已弃用。
5.线程生命周期如下图:

二、下面是sleep方法使线程进入睡眠状态的案例
/**
* @author: PrincessHug
* @date: 2019/4/12, 9:20
* @Blog: https://www.cnblogs.com/HelloBigTable/
*/
public class SleepDemo implements Runnable{
@Override
public void run() {
long l;
for (int i=1;i<6;i++){
l = System.currentTimeMillis();
try {
Thread.currentThread().sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
l = (System.currentTimeMillis() - l);
System.out.println(Thread.currentThread().getName() + "线程执行了" + i + "次,耗时" + l + "毫秒。");
}
}
}
public class SleepDriver {
public static void main(String[] args) {
SleepDemo sd = new SleepDemo();
for (int i=0;i<50;i++){
new Thread(sd,i + "#").start();
}
}
}下面是部分运行结果截图:

可以看到如果同时启动的线程越多,会导致每个线程的耗时越长。
以上就是Java线程的生命周期的介绍(附示例)的详细内容,更多请关注php中文网其它相关文章!
java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号