我在网上搜了一下相关的资料,发现了一种解决方法:
http://www.tuicool.com/articles/vm6Bra
里面同时使用了synchronized关键字和AtomicInteger,这里为什么不能直接使用int类型进行引用计数?getDatabase和close方法执行时加的都是同一个锁,synchronized应该能够保证这两个方法各自执行时的原子性,其中一个方法正在执行时,另外一条线程想执行另外一个方法时应该会被阻塞,并且也能够保证int类型变量的内存可见,为什么还要用AtomicInteger类型变量?
http://www.tuicool.com/articles/vm6Bra
里面同时使用了synchronized关键字和AtomicInteger,这里为什么不能直接使用int类型进行引用计数?getDatabase和close方法执行时加的都是同一个锁,synchronized应该能够保证这两个方法各自执行时的原子性,其中一个方法正在执行时,另外一条线程想执行另外一个方法时应该会被阻塞,并且也能够保证int类型变量的内存可见,为什么还要用AtomicInteger类型变量?
本文探讨了在并发环境下使用synchronized关键字与AtomicInteger进行引用计数的原因。虽然synchronized可以保证方法调用的原子性及内存可见性,但AtomicInteger提供了更高效的线程安全整数操作。

5321

被折叠的 条评论
为什么被折叠?



