六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 31|回复: 0

Java面试问题之三十一

[复制链接]

升级  95.33%

154

主题

154

主题

154

主题

举人

Rank: 3Rank: 3

积分
486
 楼主| 发表于 2013-2-3 14:17:01 | 显示全部楼层 |阅读模式
请谈谈Java线程的运行机制。

答:在Java虚拟机进程中,执行程序代码任务是由线程来完成的。每个线程都有一个独立的程序计数器和方法调用栈(method invocation stack)。

(1)程序计数器:也称为PC寄存器,当线程执行一个方法时,程序计数器指向方法区中下一个要执行的字节码指令。

(2)方法调用栈:简称方法栈,用来跟踪程序运行中一系列方法调用过程,栈中的元素称为栈帧。每当线程调用一个方法的时候,就会向方法栈压入一个新帧。帧用来存储方法的参数、局部变量和运算过程中的临时数据。

栈帧主要由三个部分组成:
* 局部变量:存放局部变量和方法参数。
* 操作数栈:是线程的工作区,用来存放运算过程中生成的临时数据。
* 栈数据区:为线程执行指令提供相关的信息,包括如何定位到位于堆区和方法区的特定数据,以及如何正常退出方法或者异常中断方法。

每当用java命令启动一个Java虚拟机进程时,Java虚拟机都会创建一个主线程,该线程从程序入口main()方法开始执行。
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表