Java线程

每当启动一个新线程的时候,Java虚拟机都会为它分配一个java栈。java以栈帧为单位保存线程的运行状态。虚拟机只会对java栈执行两种操作:以栈帧为单位的压栈或者出栈。

java方法可以通过两种方式完成,一种通过return返回,成为正常返回;一种通过抛出异常而异常终止 。虚拟机都会将当前栈弹出java栈然后释放掉,这样上一个方法的栈帧就是当前栈帧了。

java栈上是此对应的java线程所私有的。因此不存在多线程情况下栈数据访问同步的问题。

栈帧

栈帧由三部分组成:局部变量区,操作数栈和帧数据区。 局部变量区和操作数栈要视对应的方法而定,它们是按照字长计算的。

局部变量区: java栈帧的局部变量区被组织为一个以字长为单位,从0开始计数的数组。字节码指令通过从0开始的索引来使用其中的数据。类型为int,float,reference和returnaddress的值在数组中只占一项,而类型为byte,short和char的值在存入数组前都将被转换为int。但是long和double类型在数组中却占据连续的两项。

操作数栈和局部变量区一样。也被组织成一个以字长为单位的数组。但是不是通过索引来访问,而是通过标准栈操作–压栈和出栈来访问。

不同于程序计数器,java虚拟机没有寄存器,程序计数器也无法被程序指令直接访问。java虚拟机是由操作数栈而不是从寄存器中取得操作数的,因此它的运行方式是基于栈的而不是基于寄存器的。

虚拟机把操作数栈作为它的工作区–大多数指令都要从这里弹出数据,执行运算,然后把结果压回操作数栈。

阅读更多
个人分类: JAVA
上一篇Java线程池
下一篇戏(细)说Executor框架线程池任务执行全过程
博主设置当前文章不允许评论。

java线程java线程

2011年07月21日 1.78MB 下载

java 线程java 线程

2010年11月23日 19.58MB 下载

Java线程详解大全

2011年08月03日 234KB 下载

Java线程Java线程Java线程Java线程

2009年12月26日 9.98MB 下载

java线程入门,java线程入门

2009年05月11日 232KB 下载

Java线程的简单例子

2008年07月10日 199KB 下载

Java线程讲解Java线程讲解

2008年11月24日 6KB 下载

Java 线程总结

2010年12月21日 483KB 下载

Java线程编程总结

2011年05月02日 1.27MB 下载

没有更多推荐了,返回首页

关闭
关闭