Java线程

转载 2016年05月31日 09:43:43

每当启动一个新线程的时候,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线程.rar

  • 2017年07月26日 10:17
  • 232KB
  • 下载

Java工程师线程试题

  • 2015年03月25日 17:25
  • 37KB
  • 下载

Java线程运行轨迹-代码追踪与定位

今天在写程序时,

Java线程.pdf

  • 2014年12月14日 16:25
  • 281KB
  • 下载

java同步关键词解释、synchronized、线程锁(Lock)

1、java同步关键词解释21.1 synchronizedsynchronized是用来实现线程同步的!!!                    加同步格式:                   ...

java线程

  • 2015年05月26日 14:01
  • 53KB
  • 下载

java线程总结

  • 2013年05月27日 14:32
  • 8KB
  • 下载

【Java】使用外部变量初始化子线程 上

如何使用外部参数初始化子线程

java线程基础

  • 2013年03月01日 20:31
  • 281KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java线程
举报原因:
原因补充:

(最多只允许输入30个字)