JAVA赋值语句线程安全性,例如 int a = 1线程安全?
在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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
看不出问题里有任何共享的对象,谈何线程安全与否?
怎样做到线程安全,其实只要在编写类的时候处理好线程安全性就可以了,使用这个类的时候就不用担心什么。如果一个类已知是线程不安全的(例如 StringBuilder),那么就限制它只在当前方法里面使用即可。