我最近开始学习 Java 编程,我们刚刚接触到 Java 线程主题。我想了解的是,假设我有一个Thread
对象,它Object cat
在其run()
方法内部创建一个实例,据我所知(如果我错了,欢迎您纠正我)cat
应该保留参考变量在堆中(使其对所有“活动”线程可见)。但是,我想了解的是线程的“私有”堆栈上存储了什么样的数据Object cat
。
问问题
186 次
4 回答
1
不,引用变量不会在堆上..它将在线程的私有堆栈上...
当 run 方法被执行时..创建的对象将是无引用的,从而使自己有资格进行 GC..
于 2012-06-26T09:55:00.490 回答
0
您的 cat 变量将位于线程堆栈上,其可见性将是 run 方法。主线程和您生成的所有线程没有任何公共变量,除非您在线程和 SO var 之间明确共享这些变量。
于 2012-06-26T10:01:23.433 回答
0
cat 引用(指针)将在线程堆栈中,cat 对象将在堆中。
如果您想了解更多信息,可以查看此链接:
于 2012-06-26T10:04:45.243 回答
0
当run
被执行时,对象将被创建,heap
但引用变量将位于Thread
.
于 2012-06-26T10:17:55.103 回答