https://ask.csdn.net/questions/664596 https://www.cnblogs.com/mengdd/archive/2013/02/16/2913659.html ...
分类:
编程语言 时间:
2019-08-16 00:41:40
阅读次数:
129
双重检查锁单例模式为什么要用volatile关键字?
分类:
其他好文 时间:
2019-08-15 21:29:36
阅读次数:
170
Volatile 字面的意思时易变的,不稳定的。在C#中也差不多可以这样理解。 编译器在优化代码时,可能会把经常用到的代码存在Cache里面,然后下一次调用就直接读取Cache而不是内存,这样就大大提高了效率。但是问题也随之而来了。 在多线程程序中,如果把一个变量放入Cache后,又有其他线程改变了 ...
分类:
其他好文 时间:
2019-08-15 12:33:41
阅读次数:
75
双重检查锁定(Double check locked)模式经常会出现在一些框架源码中,目的是为了延迟初始化变量。这个模式还可以用来创建单例。下面来看一个 Spring 中双重检查锁定的例子。 这个例子中需要将配置文件加载到 中,由于读取资源比较耗时,所以将动作放到真正需要 的时候。我们可以看到 前面 ...
分类:
其他好文 时间:
2019-08-15 11:19:03
阅读次数:
114
锁的内存语义本质上可以说是对共享变量的更新,能及时让其他线程观察到;并且通过内存屏障,组织编译器或处理器指令重排序,导致多线程下不一致的现象。 1. volatile内存语义 见上一篇文章。 2. 锁的内存语义 (1)锁的释放和获取的内存语义 当线程释放锁时,JMM会将本地内存中的共享变量同步到主内 ...
分类:
其他好文 时间:
2019-08-13 00:52:36
阅读次数:
151
C++标准库(五)之智能指针源码剖析 _Mutex_base template<_Lock_policy _Lp> class _Mutex_base { protected: enum { _S_need_barriers = 0 }; }; template<> class _Mutex_bas ...
分类:
其他好文 时间:
2019-08-10 19:14:13
阅读次数:
132
参考: https://www.nowcoder.com/discuss/215891?type=2&order=0&pos=10&page=1 1.会啥框架、不会。 2.锁的实现。悲观锁、乐观锁。 3.sychronized 和 reentrantlock 实现原理 4.volatile原理 5. ...
分类:
编程语言 时间:
2019-08-09 01:02:57
阅读次数:
140
一.Thread API: setDefaultUncaughtExceptionHandler(Thread.UncaughtExceptionHandler eh) 首先要了解什么是Thread.UncaughtExceptionHandler,默认来说当线程出现未捕获的异常时,会中断并抛出异常 ...
分类:
编程语言 时间:
2019-08-08 21:46:55
阅读次数:
107
一面(主要是技术部分)1.volatile和synchronized原理2.HashMap,ConcurrentHashMap3.epoll,select,poll4.TCP,UDP(tcp的具体状态没答出来5.jvm内存分布,垃圾收集,eden区6.jvm调优(不会7.java对象头里有什么(只答了age,monitor,其他的忘了8.mysql主从复制项目(围绕项目问了一些问题)根据项目出了场
分类:
其他好文 时间:
2019-08-07 17:26:15
阅读次数:
103
要求 启动N个线程, 这N个线程要不间断按顺序打印数字1-N. 将问题简化为3个线程无限循环打印1到3 方法一: 使用synchronized 三个线程无序竞争同步锁, 如果遇上的是自己的数字, 就打印. 这种方式会浪费大量的循环 输出 方法二: 使用synchronized配合wait()和not ...
分类:
编程语言 时间:
2019-08-06 19:48:29
阅读次数:
109