java方法内调用方法,参数传递对象是否线程安全
按自己的理解,线程执行,其中基本数据类型是放置于stack中,但引用堆中对象,当在方法中调用其他方法参数为对象时,是否每个对象针对线程唯一,是否线程安全,求赐教
iteye_3440
iteye_3440 我自己觉得是线程安全的,但找不到说服自己的理由!!!
6 年多之前 回复

4个回答

在你的例子中,每个user被封装在单独的thread中,即线程封装,这样是安全的。
原因:无共享内存的操作。

“线程内对象创建是否生命周期也是随线程结束而结束”,答案:在线程外该对象未被引用,线程结束后,该对象可视为已无用/已结束,后续GC将回收(与局部变量一样)。

另:
建议去看看并发编程的书吧。

方法调用和线程有什么关系,又没有启动新的线程。
传递的是对象的引用。指向对重的对象,只有一个。 线程不安全。

看你的对象是否多线程共享的,如果不共享肯定安全!

引起线程安全的考虑,其前提是:共享内存(共享对象),且对其进行修改。
若多线程访问共享对象,但不修改其属性,则不需考虑线程安全;
若多线程操作共享对象,即修改其属性,则须考虑线程安全。

另针对“每个对象针对线程唯一”问题:
若传递共享对象,则不唯一;
若传递非共享对象,则唯一。

立即提问