乐趣区

Java多线程001——一图读懂线程与进程

本博客 猫叔的博客,转载请申明出处
前言
本系列将由浅入深,学习 Java 并发多线程。
一图读懂线程与进程

1、一个进程可以包含一个或多个线程。(其实你经常听到“多线程”,没有听过“多进程”嘛)
2、进程存在堆和方法区

3、线程存在程序计数器和栈

4、堆占最大内存,其为创建时分配的,是多线程共享的,主要存放 new 创建的对象
5、方法区也是多线程共享的,主要存放类、常量、静态变量
6、CPU 的基本执行单位是线程(注意!不是进程)
7、由此,线程需要一个程序计数器记录当前线程要执行的指令地址
8、当 CPU 的时间片用完,让出后记录当前执行地址,下次继续执行(时间片轮询)
9、只有执行 Java 代码时 pc 技数器记录的才是下一条指令的地址,执行 native 方法,则记录的是 undefined 地址
10、线程中的栈,只要存储线程局部变量、调用栈帧

栈帧:C 语言中,每个栈帧对应着一个未运行完的函数。栈帧中保存了该函数的返回地址和局部变量。
公众号:Java 猫说
现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。

退出移动版