课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
线程和进程问题我们在学习java编程的时候应该给大家讲解过很多类型了,而今天我们就再来了解一下,java编程开发线程状态都有哪些。
一.进程和线程的区别:
每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务。通常由操作系统负责多个线程的调度和执行。
二.常用的线程API
1.获取当前线程对象的方法:currentThread()
2.启动线程:.start()
3.休眠线程:sleep(时间)cpu执行其他线程,但是不会释放当前线程已经拥有的锁
4.停止线程:stop()
三.线程的分类
线程分成两类
1.用户自定义线程:该线程不会随着主线程死亡而死亡,可以理解成main方法执行完毕以后,自定义线程还在执行
2.守护线程:主线程执行完毕以后守护线程就自动死亡,可以通过thread.setDaemon(true)将该线程设置为守护线程
四.线程的状态(重点)
1.新建状态:newThread()表示一个线程的创建,但是此时线程还并没有开始执行
2.就绪状态:当前线程调用start()的时候表示线程已经就绪,此时等待cpu调度
3.运行状态:如果当前线程获取到了cpu的执行权,则开始运行该程序(执行run方法)
4.死亡状态:run方法正常的执行完毕,或者run方法里面执行错误,该错误没有被捕获也会导致线程死亡(和main方法一样如果程序出错,没有捕获异常,则程序不会继续执行)
5.阻塞状态:导致线程阻塞的情况有很多场景:比如调用sleep()方法,在同步锁当中执行一个方法的时候,没有获取到该方法的锁也会阻塞。如果操作数据库的时候IO时间较长,该线程也会阻塞在调用sleep()方法以后,休眠时间到了,重新获取到cpu的执行权,则该线程又进入到运行状态
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!