示例: public class CustomThreadPoolExecutor { //private static volatile ThreadPoolExecutor pool= null; private static volatile ThreadPoolExecutor pool = ...
分类:
编程语言 时间:
2018-09-17 16:17:31
阅读次数:
179
ThreadLocal翻译成中文比较准确的叫法应该是:线程局部变量。 这个玩意有什么用处,或者说为什么要有这么一个东东?先解释一下,在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的。 ...
分类:
其他好文 时间:
2018-09-16 19:41:05
阅读次数:
164
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来 ...
分类:
编程语言 时间:
2018-09-16 16:17:46
阅读次数:
181
class C{ private volatile static int index=0; public synchronized void show(int a,boolean f) throws InterruptedException { for(;index"+index); index++... ...
分类:
其他好文 时间:
2018-09-15 16:37:29
阅读次数:
148
一、基本概念 Java 内存模型中的可见性、原子性和有序性。可见性: 可见性是一种复杂的属性,因为可见性中的错误总是会违背我们的直觉。通常,我们无法确保执行读操作的线程能适时地看到其他线程写入的值,有时甚至是根本不可能的事情。为了确保多个线程之间对内存写入操作的可见性,必须使用同步机制。 可见性,是 ...
分类:
编程语言 时间:
2018-09-15 00:39:59
阅读次数:
205
自己将Redis的过期策略和内存淘汰策略搞混淆了。 Redis的过期策略 我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。 过期策略通常有以下三种: 定时过期:每个设置过 ...
分类:
其他好文 时间:
2018-09-09 14:48:15
阅读次数:
130
1 public class Singleton { 2 3 private Singleton(){ 4 //do something 5 } 6 7 private static volatile Singleton singleton = null; 8 9 public static Sin... ...
分类:
其他好文 时间:
2018-09-08 11:46:34
阅读次数:
120
JMM怎么解决原子性、可见性、有序性的问题? 在java中提供了一系列和并发处理相关的关键字,比如volatile、synchronized、final、juc等,这些就是java内存模型封装了底层的实现后提供给开发人员使用的关键字,在开发多线程代码的时候,我们可以直接使用synchronized等 ...
分类:
编程语言 时间:
2018-09-05 09:16:10
阅读次数:
176
volatile可以保证变量的可见性 当一个变量定义为volatile后,此变量对所有的线程具有可见性。这里的可见性是指当一个线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 每次使用volatile变量前都必须先从主内存刷新最新的值,这保证能看见其他线程对变量所做的修改后的值。每次修 ...
分类:
编程语言 时间:
2018-09-02 01:57:30
阅读次数:
134
锁与volatile的内存语义 1.锁的内存语义 2.volatile内存语义 3.synchronized内存语义 4.Lock与synchronized的区别 5.ReentrantLock源码实例分析 1.锁的内存语义 锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让 ...
分类:
编程语言 时间:
2018-08-31 21:08:39
阅读次数:
197