多线程队列不加锁有什么后果 不使用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生成临时节点实现锁定!
多线程队列不加锁有什么后果 不加锁实现线程安全 原子锁线程安全吗
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。