JAVA赋值语句线程安全性,例如 int a = 1线程安全?

发布于 2022-09-07 08:41:04 字数 338 浏览 32 评论 0

在java里的赋值语句的线程安全性
int a = 1 是否线程安全?
int b = 2;
a= b 是否线程安全?

Object c = new Object() 是否线程安全?

我在博客里找到的答案是 第一个线程安全,第二个不知道,第三个线程不安全。

以下是我找到的一些解释:
int i = 1;
是线程安全的,因为这条语句会被翻译为一条指令iconst_1,不存在线程安全问题;

//A c = new A();
这个操作分为三部处理
1.栈里创建a的符号引用
2.堆里创建A对象
3.把a指向A
所以,这个赋值语句不是线程安全的

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

孤檠 2022-09-14 08:41:04

看不出问题里有任何共享的对象,谈何线程安全与否?

荒芜了季节 2022-09-14 08:41:04
  1. 方法内部定义的变量是不存在线程安全问题的;
  2. 方法内部创建的对象,只要不会给别的线程访问,也不存在线程安全问题。

怎样做到线程安全,其实只要在编写类的时候处理好线程安全性就可以了,使用这个类的时候就不用担心什么。如果一个类已知是线程不安全的(例如 StringBuilder),那么就限制它只在当前方法里面使用即可。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文