栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Java多线程环境中的静态方法行为

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java多线程环境中的静态方法行为

汉斯·帕桑(Hans Passant)的回答很好。但是我想我会尝试为遇到此问题并且对Java陌生的任何人进行更简单的解释。开始..

Java中的内存分为两种-
堆和栈。堆是所有对象生存的地方,而堆栈是线程进行工作的地方。每个线程都有自己的堆栈,不能访问其他堆栈。每个线程还有一个指向代码的指针,该指针指向它们当前正在运行的代码位。

当线程开始运行新方法时,它将参数和局部变量保存在该方法自己的堆栈中。其中一些值可能是指向堆上对象的指针。如果两个线程同时运行相同的方法,则它们的代码指针都指向该方法,并且它们的堆栈上有它们自己的参数和局部变量的副本。仅当堆栈中的内容指向堆上的相同对象时,它们才会互相干扰。在这种情况下,可能会发生各种各样的事情。但是正如汉斯指出的那样,字符串是不可变的(无法更改),因此,如果这是唯一“共享”的对象,那么我们是安全的。

如此多的线程可以运行相同的方法。它们可能不会同时运行-
这取决于您的计算机上有多少个内核,因为JVM将Java线程映射到OS线程(已调度到硬件线程)。因此,在不使用复杂 同步
机制的情况下,您几乎无法控制这些线程的交织方式。

请注意,睡眠是线程对自身所做的事情。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/449972.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号