集群环境可能出现的问题 在上一篇博客我们介绍了如何在自己的项目中从无到有的添加了Quartz定时调度引擎,其实就是一个Quartz 和Spring的整合过程,很容易实现,但是我们现在企业中项目通常都是部署在集群环境中的,这样我们之前的定时调度就会出现问题了,因为我们的定时任务都加载在内存中的,每个集 ...
分类:
编程语言 时间:
2018-11-29 18:01:05
阅读次数:
313
volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于v ...
分类:
其他好文 时间:
2018-11-28 23:45:18
阅读次数:
200
上述代码是AbstractQueuedSynchronizer中关于如何往Node中添加尾节点的代码,使用的CAS自旋volatile变量法,解决高并发下插入尾节点不同步问题。 1.假如尾节点为空,说明节点队列为空,初始化一个头结点指向尾节点的队列; 2.继续for循环,这次进入else中,先把插入 ...
分类:
其他好文 时间:
2018-11-28 00:24:22
阅读次数:
231
原子性,可见性与有序性 在多线程中,线程同步的时候一般需要考虑原子性,可见性与有序性 原子性 原子性定义:一个操作或者多个操作在执行过程中要么全部执行完成,要么全部都不执行,不存在执行一部分的情况。 以我们在Java代码中经常用到的自增操作 为例, 实际上并不是一步操作,而是首先对i的值加一,然后将 ...
分类:
编程语言 时间:
2018-11-25 17:57:22
阅读次数:
113
使用violate关键字解决了变量的可见性问题(volatile让多线程刷新falg的值) 当更改falg的值,volatile会更新其它线程falg的值 ...
分类:
编程语言 时间:
2018-11-25 17:57:14
阅读次数:
174
双重检查锁 & volatile保证可见性(变量值改动后及时从工作内存写回主内存)和有序性(指令不可重排) 利用JVM类加载的原理保证只初始化一下实例,利用内部类,保证使用时才初始化加载(满足了赖加载) 不管采取何种方案,请时刻牢记单例的三大要点: 线程安全 延迟加载 序列化与反序列化安全 http ...
分类:
其他好文 时间:
2018-11-24 23:56:54
阅读次数:
354
1 public class MapperTool 2 { 3 private static volatile MapperTool mapper = null; 4 private static object syncRoot = new Object(); 5 public static rea ...
分类:
移动开发 时间:
2018-11-24 20:58:33
阅读次数:
221
/// <summary> /// 正则表达式工具类单例 /// </summary> public class RegexTool { private static volatile RegexTool regex = null; private static object syncRoot = ...
分类:
其他好文 时间:
2018-11-24 20:57:08
阅读次数:
200
并发编程--volatile volatile-说明 volatile关键字的作用是变量在多个线程可见; volatile 关键字是非原子性的 要是实现原子性操作,建议使用atomic类的系列对象:支持原子性操作(注意atomic类只保证本身方法的原子性,并不保证多次操作的原子性) 1. volat ...
分类:
其他好文 时间:
2018-11-20 15:01:42
阅读次数:
178