Java基础之关于几种单例实现的思考

方案1:利用CAS原子性实现单例   该实现方案存在问题:假设线程1获得锁将0置为1,还未创建对象但是CPU时间耗尽,此时线程2无法获取锁直接返回null。根本原因是:原子变量只能保证CAS操作是原子性的,但是后面的代码块无法保证。 方案2:使用双重锁检查实现单例   synchronized特点是每次只允许单个线程进入,其它线程阻塞直到占有锁的线程执行完语句块中的语句,这样做的好处是阻塞线程会等
相关文章
相关标签/搜索