为了账号安全,请及时绑定邮箱和手机立即绑定

对于代码的线程安全问题

对于代码的线程安全问题

一只萌萌小番薯 2019-05-21 11:01:36
importjava.util.ArrayList;importjava.util.List;publicclassMain{//ThreadLocalthreadLocal=newThreadLocal();inti;publicvoidincrement(){i++;}publicstaticvoidmain(String[]args){Mainmain=newMain();Runnablerunnable=newRunnable(){@Overridepublicvoidrun(){for(inti=0;i
查看完整描述

2 回答

?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

不是线程安全是一定的,使用30,300个线程试试就知道了,让你产生安全的错觉在System.out.println是一个耗时的同步方法,就是它在很大程度上掩盖了i++的可见性和原子性的问题。使用AtomicInteger或synchronized吧
                            
查看完整回答
反对 回复 2019-05-21
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

开始以为是
publicvoidprintln(intx){
synchronized(this){
print(x);
newLine();
}
}
后来发现我错了
方法本身的synchronized和被调用的方法的synchronized
确实是线程不安全的
跑300的结果
2999915
                            
查看完整回答
反对 回复 2019-05-21
  • 2 回答
  • 0 关注
  • 288 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信