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

synchronized 的用法?

synchronized 的用法?

慕仰6620973 2016-09-25 11:25:31
private int mInt=1; for (int i = 0; i < 50000; i++) {     Thread thread = new Thread(new Runnable() {         @Override         public void run() {             Inner inner = new Inner();             for (int i = 0; i < 10000; i++) {                 inner.t1();             }         }     });     thread.start(); } Log.i(TAG, "安全锁测试。。。"+mInt); class Inner {     public void t1() {         synchronized (this) {             mInt++;         }     } }为什么每次的结果都不一样,不是同步锁吗???SynchronizedExp: 安全锁测试。。。499970001SynchronizedExp: 安全锁测试。。。499890001SynchronizedExp: 安全锁测试。。。499922095SynchronizedExp: 安全锁测试。。。499913016
查看完整描述

1 回答

?
慕仰6620973

TA贡献14条经验 获得超8个赞

自己发现原因了。。安全锁,锁的是对象不是代码块。。可以改成this.getClass(); 或者Inner inner = new Inner(); 放到线程外,把synchronized (inner )改成即可。

查看完整回答
反对 回复 2016-09-25
  • 1 回答
  • 0 关注
  • 1253 浏览

添加回答

举报

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