线程的基本概念,基本状态、状态之间的关系
来源:互联网 发布:it编程 编辑:程序博客网 时间:2024/05/16 08:22
基本概念
线程:是进程中的一个执行控制单元,执行路径
一个线程是进程的一个顺序执行流。同类的多个线程共享一块内存空间和一组系统资源,线程本身有一个供程序执行时的堆栈。线程在切换时负荷小,因此,线程也被称为轻负荷进程。一个进程中可以包含多个线程。
在JVM内存模型中,线程开辟在栈中,有些前辈称之为方法的栈帧,对于这个栈帧空间就是一个线程空间,也就是一个进程调用了一个方法,这个方法在栈中就开辟一个空间,也可以认为是线程的空间,当该方法结束后,该线程就结束,但进程还在继续执行,还会继续执行接下来的方法,继续开辟线程。。。
线程与进程区别
一个进程有一个或多个线程。线程更细化于进程,使得多线程程序的并发性高。进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
线程在执行过程中与进程的区别在于每个独立的线程有一个程序运行的入口、顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
线程状态
1.新建
new语句创建的线程对象处于新建状态,此时它和其他java对象一样,仅被分配了内存。
2.等待
当线程在new之后,并且在调用start方法前,线程处于等待状态。
3.就绪
当一个线程对象创建后,其他线程调用它的start()方法,该线程就进入就绪状态。处于这个状态的线程位于Java虚拟机的可运行池中,等待cpu的使用权。
4.运行状态
处于这个状态的线程占用CPU,执行程序代码。在并发运行环境中,如果计算机只有一个CPU,那么任何时刻只会有一个线程处于这个状态。
只有处于就绪状态的线程才有机会转到运行状态。
5.阻塞状态
阻塞状态是指线程因为某些原因放弃CPU,暂时停止运行。当线程处于阻塞状态时,Java虚拟机不会给线程分配CPU,直到线程重新进入就绪状态,它才会有机会获得运行状态。
阻塞状态分为三种:
1、等待阻塞:运行的线程执行wait()方法,JVM会把该线程放入等待池中。
2、同步阻塞:运行的线程在获取对象同步锁时,若该同步锁被别的线程占用,则JVM会把线程放入锁池中。
3、其他阻塞:运行的线程执行Sleep()方法,或者发出I/O请求时,JVM会把线程设为阻塞状态。当Sleep()状态超时、或者I/O处理完毕时,线程重新转入就绪状态。
6.死亡状态
当线程执行完run()方法中的代码,或者遇到了未捕获的异常,就会退出run()方法,此时就进入死亡状态,该线程结束生命周期。状态之间的转换
参照别人做的图:
也可看这个:
文章参考:http://blog.csdn.net/bornlili/article/details/55805732 感谢博主分享
- 线程的基本概念,基本状态、状态之间的关系
- 线程的基本概念,基本状态、状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念、线程的基本状态以及状态之间的关系
- 线程的基本概念?线程的基本状态以及状态之间的关系
- 线程的基本概念、现成的基本状态以及状态之间的基本关系
- 线程的基本概念,状态,和状态之间的关系
- 线程的基本概念状态和之间的关系
- 线程的基本概念,线程的基本状态?
- 阐述线程状态之间的关系
- 线程的基本概念及状态
- 线程概念,状态及状态之间的关系,实现多线程方法,实现同步线程的方式
- 线程状态间的关系
- 选取随机数
- ViewDragHelper 初入
- 0914 数据库设计DAO
- 使用pylon构建应用程序的常见设置(基本是环境设置)
- Java 集合深入理解(13):Stack 栈
- 线程的基本概念,基本状态、状态之间的关系
- xftp上传失败之解决办法
- Java设计模式之装饰者模式
- python学习三个月001
- 浅谈面向对象--《Thinking in Java》读书笔记(一)
- 多线程间通信的方法
- HDU 4035 Maze(概率DP)
- JAVA设计模式之单例模式
- LeetCode.477 Total Hamming Distance