标签:volatile

Java

死磕 Java 并发:J.U.C 之阻塞队列 – PriorityBlockingQueue

12

xirruiqiang 发布于 2018-05-27

此篇博客所有源码均来自JDK 1.8 作者:大明哥 原文地址:http://cmsblogs.com 说明 队列是比较常见的数据结构,我们也经常使用到,BlockingQueue常用于生产者消费者场景,在Java的并发包中已经提供了BlockingQueue的实现 ,后面几篇会介...

阅读(12)评论(0)赞 (0)

Java

Java volatile的内存语义与AQS锁内存可见性

5

darida 发布于 2018-05-24

0、引子 提到volatile首先想到就是: 保证此变量对所有线程的可见性,这里的 “可见性” 是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。 禁止指令重排序优化。 到这里大家感觉自己对volatile理解了吗? 如果理解了,大家考虑这么一个问题:Ree...

阅读(13)评论(0)赞 (0)

Java

从原理分析Kotlin的延迟初始化: lateinit var和by lazy

1

dulong 发布于 2018-05-23

Koltin中属性在声明的同时也要求要被初始化,否则会报错。 例如以下代码: private var name0: String //报错 private var name1: String = "xiaoming" //不报错 private var nam...

阅读(19)评论(0)赞 (0)

Java

Spring Boot 1.X和2.X优雅重启实战

1

尖兵 发布于 2018-05-21

项目在重新发布的过程中,如果有的请求时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求,等待未完成的请求执行完成,这样可以保证数据的完整性。 Spring Boot 1.X import java.util.c...

阅读(31)评论(0)赞 (0)

Java

Java并发系列 — CAS

1

yeseng 发布于 2018-05-21

原文地址: 【死磕Java并发】—-深入分析CAS CAS,Compare And Swap,即比较并交换。Doug lea大神在同步组件中大量使用CAS技术鬼斧神工地实现了Java多线程的并发操作。整个AQS同步组件、Atomic原子类操作等等都是以CAS实现的,甚至Concu...

阅读(24)评论(0)赞 (0)

Java

Spring Boot 1.X 和 2.X 优雅重启实战

1

yanxinchi 发布于 2018-05-21

项目在重新发布的过程中,如果有的请求时间比较长,还没执行完成,此时重启的话就会导致请求中断,影响业务功能,优雅重启可以保证在停止的时候,不接收外部的新的请求,等待未完成的请求执行完成,这样可以保证数据的完整性。 Spring Boot 1.X import java.util.c...

阅读(27)评论(0)赞 (0)

Java

Java 集合Hashtable源码深入解析

2

dulong 发布于 2018-05-21

前面,我们已经系统的对List进行了学习。接下来,我们先学习Map,然后再学习Set;因为Set的实现类都是基于Map来实现的(如,HashSet是通过HashMap实现的,TreeSet是通过TreeMap实现的)。 首先,我们看看Map架构。 如上图: (01) Map 是 ...

阅读(24)评论(0)赞 (0)

Java

Java并发系列 — LockSupport

11

hanze 发布于 2018-05-21

LockSupport 是用来创建锁和其他同步类的基本线程阻塞原语。 此类以及每个使用它的线程与一个许可关联(从 Semaphore 类的意义上说)。如果该许可可用,并且可在进程中使用,则调用 park 将立即返回;否则可能阻塞。如果许可尚不可用,则可以调用 unpark 使其可...

阅读(14)评论(0)赞 (0)

Java

Java并发编程-volatile可见性的介绍

3

刘莉莉 发布于 2018-05-17

要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸。最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍。 有什么用? volatile主要对所修饰的变量提供两个功能 可见性 防止指令重排序 本篇博客...

阅读(13)评论(0)赞 (0)

Java

单例模式你会几种写法?

4

hanze 发布于 2018-05-16

前言 只有光头才能变强 回顾前面: 给女朋友讲解什么是代理模式 包装模式就是这么简单啦 本来打算没那么快更新的,这阵子在刷Spring的书籍。在看Spring的时候又经常会看到“单例”,“工厂”这些字样。 所以,就先来说说单例和工厂设计模式啦,这两种模式也是很常见的,我看很多面经...

阅读(20)评论(0)赞 (0)

Java

Java 并发编程 —– AQS(抽象队列同步器)

yeseng 发布于 2018-05-16

AQS即AbstractQueuedSynchronizer的缩写,是并发编程中实现同步器的一个框架。框架,框架,重要的事情说三遍,框架就是说它帮你处理了很大一部分的逻辑,其它功能需要你来扩展。想想你使用Spring框架的场景,Spring帮助开发者实现IOC容器的bean依赖管...

阅读(17)评论(0)赞 (0)

Java

Java中atomic包中的原子操作类总结

yanxinchi 发布于 2018-05-16

在并发编程中很容易出现并发安全的问题,有一个很简单的例子就是多线程更新变量i=1,比如多个线程执行i++操作,就有可能获取不到正确的值,而这个问题,最常用的方法是通过Synchronized进行控制来达到线程安全的目的( 关于synchronized可以看这篇文章 )。但是由于s...

阅读(23)评论(0)赞 (0)

Java

Java并发系列—工具类:Semaphore

1

xiaoli.wang 发布于 2018-05-15

原文地址:cnblogs.com/liuyun1995/p/8474026.html 作者:劳夫子 Semaphore(信号量)用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。 Semaphore提供了一个许可证的概念,可以把这个许可证看作公共汽...

阅读(27)评论(0)赞 (0)

Java

JDK8源码分析——并发库核心AbstractQueuedSynchronizer的实现思路

8

changyuan.xu 发布于 2018-05-15

原创作品未经作者同意严禁私自转载,或私自修改后据为自有。违者将追究法律责任 Ⅰ. AQS 简介 AbstractQueuedSynchronizer 是JDK并发包的核心类,大多数并发工具实现如 CountDownLatch 、 Semaphore 、 ReentrantLock...

阅读(23)评论(0)赞 (0)

Java

Lettuce 5.1.0.M1 发布,带来 5 大功能特性变更

xiaoli.he 发布于 2018-05-15

Lettuce 5.1.0.M1 发布,这是 Lettuce 5.1 发布的第一个预览版本,包含改进和错误修复。Lettuce 5.1.0.M1 需要 Java 8,Java 9 或 Java 10 环境。 此次比较显著的变化有: Redis Streams 的 API 预览 异...

阅读(29)评论(0)赞 (0)

Java

2018-05-15 Java CAS 原理分析

1

hanze 发布于 2018-05-14

1.简介 CAS 全称是 compare and swap,是一种用于在多线程环境下实现同步功能的机制(可以把 CAS 看做乐观锁)。CAS 操作包含三个操作数 – 内存位置、预期数值和新值。CAS 的实现逻辑是将内存位置处的数值与预期数值想比较,若相等,则将内存位置处的值替换为...

阅读(30)评论(0)赞 (0)

Java

Java工程师成神之路~(2018修订版)

1

darida 发布于 2018-05-14

主要版本 更新时间 备注 v1.0 2015-08-01 首次发布 v1.1 2018-03-12 增加新技术知识、完善知识体系 一、基础篇 JVM JVM内存结构 堆、栈、方法区、直接内存、堆和栈区别 Java内存模型 内存可见性、重排序、顺序一致性、volatile、锁、fi...

阅读(38)评论(0)赞 (0)

IOS技术

iOS监控-启动crash

3

changyuan.xu 发布于 2018-05-14

原文地址 相较于正常的崩溃问题,启动crash造成的损失要远远大得多。正常来说,如果有足够强健的构建发布系统,大多数时候能在版本上线之前及时发现问题并且修复,但是仍然存在小概率的线上意外。启动crash一般同时具备损害严重以及难以捕获两大特点 启动过程 从应用图标被用户点击开始,...

阅读(23)评论(0)赞 (0)