Redis安装 Redis核心数据结构以及使用场景 String结构 字符串常用操作 原子加减 String应用场景 这个是微信公众号的文章阅读量数量的统计,可以通过redis的string数据结构来解决。使用incr原子操作命令,redis的key是article:readcount:{文章id} ...
分类:
微信 时间:
2019-10-20 21:43:48
阅读次数:
170
什么是自旋锁 自旋锁要从多线程下的锁机制说起,由于多处理器系统环境中有些资源因为其有限性,有时需要互斥访问(mutual exclusion),这时会引入锁的机制,只有获取了锁的进程才能获取资源访问。即每次只能有且只有一个进程能获取锁,才能进入自己的临界区,同一时间不能两个或两个以上进程进入临界区, ...
分类:
其他好文 时间:
2019-10-17 17:43:19
阅读次数:
94
先来看一段简单的代码,稍微有点并发知识的都可以知道打印出结果必然是一个小于20000的值 改进一下,使用jdk给我们提供的原子操作类,达到了我们预想的结果 下面就来探究下jdk为我们提供的原子操作类的原理,基于java native方法实现一个自己原子操作类 实现这样一个类的要点有:1、基于反射机制 ...
分类:
编程语言 时间:
2019-10-15 13:19:17
阅读次数:
76
并发与竟态,以及自旋锁,原子操作等 并发:多个任务并行执行。 竟态:并发的线程对共享资源的访问容易发生竟态。 竟态发生情况举例: 1.多处理器SMP的多个cpu,smp是一种紧耦合,共享总线存贮的系统模型。 2.单CPU内进程与抢占他的进程。 3.中断与进程之间:硬中断,软中断,tasklet,低半 ...
分类:
其他好文 时间:
2019-10-13 11:11:51
阅读次数:
70
在准备进入concurrentHashMap的源码世界中的时候,发现很多方法是基于CAS原子操作的,之前在看JVM的时候确实看过CAS,但是并没有仔细的去研究,所以决定先一探究竟,经过网上查阅一些资料,对CAS还是有了一些理解。如果说在只有一个线程的时候,资源不会出现竞争,也不会存在所谓的共享资源的... ...
分类:
其他好文 时间:
2019-10-12 01:28:21
阅读次数:
381
CountDownLatch是一个计数器闭锁,通过它可以完成类似于阻塞当前线程的功能,即:一个线程或多个线程一直等待,直到其他线程执行的操作完成。CountDownLatch用一个给定的计数器来初始化,该计数器的操作是原子操作,即同时只能有一个线程去操作该计数器。 ...
分类:
编程语言 时间:
2019-10-08 12:28:55
阅读次数:
107
一、概述 单例模式是设计模式中相对简单且非常常见的一种设计模式,但是同时也是非常经典的 高频 面试题,相信还是有很多人在面试时会挂在这里。本篇文章主要针对单例模式做一个回顾,记录单例模式的应用场景、常见写法、针对线程安全进行调试(看得见的线程)以及总结。相信大家看完这篇文章之后,对单例模式有一个非常 ...
分类:
其他好文 时间:
2019-10-08 09:29:03
阅读次数:
95
Java volatile 理解 Volatile 1 如果一个字段被申明为volatile,那么Java内存模型则可以保证多个线程所看到的值是一致的。 2 禁止指定重排。 3 volatile只能保证可见性,不能保证原子性 可见性实现原理: volatile能够保证可见性,那么它是如何实现可见性的 ...
分类:
编程语言 时间:
2019-10-07 23:18:55
阅读次数:
123
1. 说说Atomiclnteger的使用场景 AtomicInteger提供原子操作来进行Integer的使用,适合并发情况下的使用,比如两个线程对同一个整数累加。 2. 为什么Atomiclnteger是线程安全的,原理是什么 AtomicInteger是对int类型的一个封装,提供原子性的访问 ...
分类:
其他好文 时间:
2019-10-05 14:43:19
阅读次数:
166
队列: 1.先进先出,后进后出; 2.支持入队Enqueue(将数据放到队尾)和出队Dequeue(取出队头数据)操作; 3.和栈一样属于操作受限的线性表; 如何实现队列? 1.数组实现(顺序队列) 2.链表实现(链式队列) 3.循环队列 队列的常见应用: 1.阻塞队列1)在队列的基础上增加阻塞操作 ...
分类:
其他好文 时间:
2019-10-03 18:10:11
阅读次数:
83