开发者社区> 问答> 正文

java 线程共用代码段吗?

java的线程里run方法里的代码段,new几个Thread类一块运行时,内存中只有一套代码吧?

展开
收起
蛮大人123 2016-02-20 17:36:02 2189 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    Java VM的代码放在方法区,在class被load的时候load到内存里面。所以代码时只有一套的。
    而new几个Thread,他们各自有自己的栈区,局部变量放在栈区。这个不是共享的。至于你问到,多核状态下,4套代码是不是更快,其实cpu的预取的确会把一部分代码取到它的cache里,也就是代码会在cache里可能重复(假设你同时正好在运行几个相同的Thread)。但是这个不是Java VM做的,而是现代的CPU都是这么做的。虚拟机本身只是一个栈操作的应用程序,它并不会操作cache。

    2019-07-17 18:45:34
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载