2

我最近开始学习 Java 编程,我们刚刚接触到 Java 线程主题。我想了解的是,假设我有一个Thread对象,它Object cat在其run()方法内部创建一个实例,据我所知(如果我错了,欢迎您纠正我)cat应该保留参考变量在堆中(使其对所有“活动”线程可见)。但是,我想了解的是线程的“私有”堆栈上存储了什么样的数据Object cat

4

4 回答 4

1

不,引用变量不会在堆上..它将在线程的私有堆栈上...

当 run 方法被执行时..创建的对象将是无引用的,从而使自己有资格进行 GC..

于 2012-06-26T09:55:00.490 回答
0

您的 cat 变量将位于线程堆栈上,其可见性将是 run 方法。主线程和您生成的所有线程没有任何公共变量,除非您在线程和 SO var 之间明确共享这些变量。

于 2012-06-26T10:01:23.433 回答
0

cat 引用(指针)将在线程堆栈中,cat 对象将在堆中。

如果您想了解更多信息,可以查看此链接:

http://www.javaworld.com/javaworld/jw-06-2012/120618-jw-archive-under-the-hood-threads-and-shared-data.html

于 2012-06-26T10:04:45.243 回答
0

run被执行时,对象将被创建,heap但引用变量将位于Thread.

于 2012-06-26T10:17:55.103 回答