关于JAVA多线程程序中的内存解析

本文详细介绍了Java中如何创建并执行线程。通过实例展示了如何使用`main`方法启动线程,以及`run`和`start`方法的区别。线程的并发执行使得程序能同时处理多个任务,提高系统效率。内存分析部分解释了线程如何在栈内存中独立运行,确保线程间互不干扰。
摘要由CSDN通过智能技术生成

首先创建一个简化版的主方法(main())

public static void main(String[] args){
MyThread mt=new MyThread();//创建一个MyThread类对象
mt.run();//调用一个run方法
mt.start();//调用一个start方法  
...     
        }

其次设置一个线程任务run方法

public void run(){
for(...)
{..... }      
        }

内存分析:

方法的执行需要栈内存,首先程序执行入口(main方法)压栈执行,并在主方法中逐行执行,而在其中有创建对象mt,该对象在堆内存中分配了一段空间,然后将其地址值赋值给变量,mt就可以通过该地址找到变量。
接下来执行mt.run()(调用一下run方法),该方法压栈执行,这样该程序就为单线程程序(由main线程执行),但是调用mt.start()方法,这时就会开辟一个新栈空间,再执行run方法。
以此类推…

所以,run方法不是在主方法中执行,而是在新栈中执行,这样就相当于两个进程并发进行。


对于CPU而言,就有了选择的权利,它可以执行主方法,也可以执行run方法。

多线程好处:能使多个线程之间互不影响(在不同的栈空间中)。


内存图解:

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值