一个线程new出来一个对象,将引用 传递给另外一个线程,另外一个线程可以使用吗

新手上路,请多包涵

一个线程new出来一个对象,将引用 传递给另外一个线程,另外一个线程可以使用吗?

阅读 4.9k
2 个回答

当然可以用,new出来的对象存储在进程的内存空间,进程的所有线程都可以访问进程的所有内存空间,所以java new出来的东西都可以被所有线程共享。

但这有可能导致访问冲突,比如某个线程修改了某个对象的数据,修改到一半,还没改完,另一个线程可能会读取或者再次修改同一个对象的同一个数据,容易把整个进程弄崩溃。

所以对于在不同线程中同时访问的对象,需要作用同步,用synchronized或者其他java提供的线程同步互斥机制。

专业的叫法是对象的发布与逸出

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏