标签:volatile

Java

dubbo集群和负载均衡

likai 发布于 2018-12-19

Cluster接口的作用是将RegistryDirectory目录中的List 包装为Invoker接口,让Invoker接口调用方不需要关注负载均衡的细节。 @SPI(FailoverCluster.NAME) public interface Cluster { @Adapt...

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

Java

Java并发编程之锁机制之ReentrantReadWriteLock(读写锁)

4

邓龙华 发布于 2018-12-19

在前面的文章中,我们讲到了ReentrantLock(重入锁),接下来我们讲 ReentrantReadWriteLock(读写锁) ,该锁具备重入锁的 可重入性 、 可中断获取锁 等特征,但是与 ReentrantLock 不一样的是,在 ReentrantReadWriteL...

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

Java

Java反射机制详解

2

likai 发布于 2018-12-18

对于一般的开发者,很少需要直接使用Java反射机制来完成功能开发,但是反射是很多框架譬如 Spring, Mybatis 实现的核心,反射虽小,能量却很大。 本文主要介绍反射相关的概念以及API的使用,关于反射的应用将在下一篇文章中介绍 反射的介绍 反射(Reflection)是...

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

Java

Java并发编程-内存模型及volatile

1

yeseng 发布于 2018-12-18

内存模型相关概念 大家都知道,计算机在执行程序时,每条指令都是在CPU中执行的,而执行指令过程中,势必涉及到数据的读取和写入。这时就存在一个问题,由于CPU执行速度很快,而从内存读取数据和向内存写入数据的过程则慢得多(不是一个数量级),因此如果任何时候对数据的操作都要通过和内存的...

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

Java

学习AbstractQueuedSynchronizer源码以及原理

zhuangli 发布于 2018-12-17

AbstractQueuedSynchronizer(以下简称AQS),是用来构建锁或者其他同步组件的基础架构,它使用一个int成员变量管理同步状态,通过内置FIFO队列来完成资源获取获取线程的排队工作,作者(Doug lea)大神期望它能完成大部分同步需求的基础。 AQS的主要...

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

Java

分布式架构基础:Java RMI详解

4

xiaoli.he 发布于 2018-12-16

GitHub: github.com/jayknoxqu/r… RMI简介 ​ Java RMI ,即 远程方法调用 ( Remote Method Invocation ),一种用于实现 远程过程调用 (RPC) (Remote procedure call) 的Java AP...

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

Java

深入理解java反射原理

刘莉莉 发布于 2018-12-15

反射是java的一个特性,这一特性也使得它给了广大的第三方框架和开发过者很大的想像空间。 通过反射,java可以动态的加载未知的外部配置对象,临时生成字节码进行加载使用,从而使代码更灵活!可以极大地提高应用的扩展性! 但是,除了停留在使用其华丽功能,我们还可以去看看其实现! 主要...

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

Java

Java并发面试系列文章总结【石杉的架构笔记】

xiaoli.wang 发布于 2018-12-15

“ 各位小伙伴大家好,又到了久违的周末。老规矩,周末我们依然进行回顾和总结,这次总结的内容,是上周的Java并发面试系列文章。 一 并发系列第一篇,照例采用场景驱动的方式,阐述了volatile关键字的作用。 首先,在我们假设的多线程场景下,出现了什么问题?然后volatile是...

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

Java

死磕java concurrent包系列(六)基于AQS解析信号量Semaphore

3

darida 发布于 2018-12-13

之前分析AQS的时候,内部有两种模式,独占模式和共享模式,前面的ReentrantLock都是使用独占模式,而Semaphore同样作为一个基于AQS实现的并发组件,它是基于共享模式实现的,我们先看看它的使用场景 Semaphore共享锁的基本使用 假设有20个人去银行柜面办理业...

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

Java

打通 Java 任督二脉 —— 并发数据结构的基石

12

刘莉莉 发布于 2018-12-13

每一个 Java 的高级程序员在体验过多线程程序开发之后,都需要问自己一个问题,Java 内置的锁是如何实现的?最常用的最简单的锁要数 ReentrantLock,使用它加锁时如果没有立即加成功,就会阻塞当前的线程等待其它线程释放锁之后再重新尝试加锁,那线程是如何实现阻塞自己的?...

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

Java

作为一位开发三到五年的java程序员,这些必备的技能你是否具备?

2

dulong 发布于 2018-12-11

前言 因为和同事有约定再加上LZ自己也喜欢做完一件事之后进行总结,因此有了这篇文章。这篇文章大部分内容都是面向整个程序员群体的,当然因为LZ本身是做Java开发的,因此有一部分内容也是专门面向咱们Java程序员的。 简单先说一下,LZ坐标杭州,13届本科毕业,算上年前在阿里巴巴B...

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

Java

PolarDB数据库性能大赛Java选手分享

4

xiaoli.wang 发布于 2018-12-10

国际惯例,先报成绩,熬了无数个夜晚,最后依旧被绝杀出了第一页,最终排名第 21 名。前十名的成绩分布为 413.69~416.94,我最终的耗时是 422.43。成绩虽然不是特别亮眼,但与众多参赛选手使用 C++ 作为参赛语言不同,我使用的是 Java,一方面是我 C++ 的能力...

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

Java

通俗易懂,JDK 并发容器总结

3

hanze 发布于 2018-12-10

实战Java高并发程序设计》为我们总结了下面几种大家可能会在高并发程序设计中经常遇到和使用的 JDK 为我们提供的并发容器。先带大家概览一下,下面会一一介绍到。 JDK提供的这些容器大部分在 java.util.concurrent 包中。 ConcurrentHashMap: ...

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

Java

懒加载的艺术

zhuangli 发布于 2018-12-09

懒加载是一种加载方式,加载对象一般有两种方式,一是在启动时就立即创建好,另一种则是在需要用到的时候再去加载即懒加载。懒加载一般会针对单例场景,且一般是针对在加载消耗较大费时,且不一定会用到的场景。 好了,相信啥意思大家都明白!那么具体如何实现呢?其实挺有意思的! 方案1. 直接用...

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

Java

死磕java concurrent包系列(三)基于ReentrantLock理解AQS的条件队列

2

yanxinchi 发布于 2018-12-08

基于Codition分析AQS的条件队列 前言 上一篇我们讲了AQS中的同步队列队列,现在我们研究一下条件队列。 在java中最常见的加锁方式就是synchorinzed和Reentrantlock,我们都说Reentrantlock比synchorinzed更加灵活,其实就灵活...

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

Spring

SOFATracer 插件埋点机制详解

5

xiaoli.wang 发布于 2018-12-07

SOFATracer 是一个用于分布式系统调用跟踪的组件,通过统一的 traceId 将调用链路中的各种网络调用情况以日志的方式记录下来,以达到透视化网络调用的目的。这些日志可用于故障的快速发现,服务治理等。 从RoadMap 和 PR 来看,目前 SOFATracer 已经支持...

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

Java

java内存模型–JMM

3

songhua.gao 发布于 2018-12-07

编辑推荐: 本文来自于cnblogs,本文介绍了Java运行时数据时的内存区域以及主内存和工作内存等相关内容。 在并发编程中,多个线程之间采取什么机制进行通信(信息交换),什么机制进行数据的同步? 在Java语言中,采用的是共享内存模型来实现多线程之间的信息交换和数据同步的。 线...

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

Java

深入理解Java虚拟机(二)

4

刘莉莉 发布于 2018-12-06

1、泛型出现之前存在的问题: 所有对象的类型都继承自Object,虚拟机只有到运行时才能知道这个Object具体是什么类型,在编译期是无法检查这个Object是否强制转型成功,会将ClassCaseException的风险转移到程序运行期。 2、泛型的作用: 通过泛型,编译器可以...

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