2016 - 2025

感恩一路有你

多线程队列不加锁有什么后果 不使用synchronized和lock,如何实现一个线程安全的单例?

浏览量:2040 时间:2021-03-13 10:52:23 作者:admin

不使用synchronized和lock,如何实现一个线程安全的单例?

在多线程操作系统中,如果不使用同步和锁定,就想不出更好的方法来实现安全的单例。即使是互斥或临界区技术也只是一种伪装的锁定机制。但是,从另一个角度来看,一个单例无论如何只有一个实体对象,它占用的系统资源(通常是内存)不会太大。因此,可以采用预先生成的解决方案,即在程序初始化过程中很好地生成单例对象,从而避免了运行中多线程竞争的问题。

什么时候需要分布式锁?

首先,我们需要知道在非分布式环境中使用锁可以解决什么问题?

多线程环境,共享资源线程安全问题!此时,共享资源通常在一台机器的多线程中竞争。从JAVA内存模型的角度来看,我们可以通过锁定对象、方法和代码块来避免共享资源的竞争

!1,生成全局ID;

2,修改全局配置文件;

3,分布式服务中的seckill;

4,分布式环境中的重复提交;

1,使用数据库的唯一主键实现锁定

!2、使用redis指令:通常使用setnx方法,incr方法实现

3、使用zookeeper:使用API生成临时节点实现锁定!

多线程队列不加锁有什么后果 不加锁实现线程安全 原子锁线程安全吗

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。