Java线程入门
# 什么是进程?什么是线程?
用自己的话说: =======

Java线程入门
# 什么是进程?什么是线程?
用自己的话说: >>>>>>> 593e4ea (添加了SSM) 进程是一个应用程序; 线程是一个进程中的执行单元,或者说执行场景
任务管理器直接看见的是进程; DOS 命令窗口输入
java java文件名
,执行的也是一个进程,这在任务管理器能看见;
# JVM 的主线程和 GC 线程
一个进程可以启动多个线程。比如: java 程序至少有 2 个线程并发,一是执行 main 方法的主线程、二是垃圾回收线程
在 DOS 命令窗口输入java java文件名
敲下回车之后,
先启动 JVM,JVM 就是一个进程; 接下来 JVM 启动主线程,主线程是调用 main 方法的;
# 进程和线程的关系
# 进程与进程
进程与进程的内存独立不共享
# 线程与线程
同一个进程下的线程,共享堆内存和方法区内存。栈内存相互独立,有几个线程就会有几个栈空间
三个线程就是三个栈空间
# 多线程
那现实中的例子打比方: 火车站售票大厅看做进程,售票窗口看成线程 甲在窗口 1 买票,乙在窗口 2 买票,甲不需要等乙,乙不需要等甲 这可以体现出多线程并发提升程序处理效率
java 程序至少有 2 个线程并发,一是执行 main 方法的主线程、二是垃圾回收线程
一个比较详细的例子: 主线程对应的栈,叫主栈。主线程调用 main 方法,如果 main 方法调用别的方法 m1,那么 m1 方法也在主线程,也在主栈。而 m1 还调用了另一个方法 m2,那么 m2 也在主线程,也在主栈
如果 m1 方法有一段代码是启动新线程的,那么新线程可以叫分支线程 t1。分支线程会开一个新栈,是区别于主栈的支栈。
main 方法结束不代表程序结束
在刚刚的例子中:main 方法结束时,分支线程的方法不一定结束。也就是main 方法结束,是主栈空了,只能代表主线程结束;不能代表分支线程也结束,其他的栈可能还在压栈弹栈
# 单核 CPU 不能做到真正的多线程并发
首先,真正的多线程并发是,t1 正在执行 t1,t2 正在执行 t2
← JUC梳理 实现线程的前2种方式→ <<<<<<< HEAD
- 跟随系统
- 浅色模式
- 深色模式
- 阅读模式