208多线程原理_随机性打印结果和039多线程内存图解
多线程原理_随机性打印结果
Java的线程调度为抢占式调度,打印出来的多线程为随机性打印结果.
下面我们解释一下多线程情况下的随机性打印结果:
当我们运行程序时,JVM找OS开辟一条main方法通向cpu的路径,这条路径叫主线程,cpu通过主线程执行main方法.
而main方法中我们创建了新的线程,新线程开辟了一条通向cpu的新路径,用来执行run方法.(不知道run方法的请看如何创建多线程)
此时对于cpu而言就有了两条优先级相同的执行路径,cpu就有了选择的权利,cpu喜欢谁就会执行那条路径,我们控制不了cpu,所以就有了程序的随机打印结果.
Java的线程调度为抢占式调度,打印出来的多线程为随机性打印结果.
下面我们解释一下多线程情况下的随机性打印结果:
当我们运行程序时,JVM找OS开辟一条main方法通向cpu的路径,这条路径叫主线程,cpu通过主线程执行main方法.
而main方法中我们创建了新的线程,新线程开辟了一条通向cpu的新路径,用来执行run方法.(不知道run方法的请看如何创建多线程)
此时对于cpu而言就有了两条优先级相同的执行路径,cpu就有了选择的权利,cpu喜欢谁就会执行那条路径,我们控制不了cpu,所以就有了程序的随机打印结果.

多线程内存图解
注意看这个run调用 和start调用是不一样的
1.main压栈到最下面 一行一行执行main方法里面的代码
2.main方法的第一步创建对象,创建对象开辟堆内存存储在堆内存中(地址值赋值给变量名0x11)
3.如果mt.run();来调用 run方法被压栈进来 其实是一个单线程的程序(main线程,会先执行完run方法再执行主线程中的去其他方法)
4.如果mt.start();来调用 会开辟一个新的栈空间。执行run方法(run方法就不是在main线程执行,而是在新的栈空间执行,如果再start会再开辟一个栈空间再多一个线程)
5.对cpu而言,cpu就有了选择的权利 可以执行main方法、也可以执行两个run方法
多线程好处:多个线程互不影响 因为在不同的栈空间中,如果某一个线程挂了,不影响别的线程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix