volatile和synchronized的区别 volatile本质是在告诉jvm当前变量在寄存器(工作内存)中的值是不确定的,需要从主存中读取; synchronized则是锁定当前变量,只有当前线程可以访问该变量,其他线程被阻塞住。 volatile仅能使用在变量级别;synchronized ...
分类:
其他好文 时间:
2020-01-13 19:51:51
阅读次数:
66
来源:https://www.nowcoder.com/discuss/57978 如何消除隐式转换? 面经解释:使用explicit关键字进行修饰 自己补充:explicit关键字修饰,一般来说加了肯定比不加好,主要用来针对隐式的强转 例子: class A{ public: A(const st ...
分类:
其他好文 时间:
2020-01-13 16:05:12
阅读次数:
76
本文转自:https://my.oschina.net/u/2246410/blog/1801293/ 核心创建方式 结构图 AliasRegistry:注册别名和具体的名称接口 SingletonBeanRegistry:注册bean的接口 BeanFactory:bean的实际调用接口 Hier ...
分类:
编程语言 时间:
2020-01-11 00:37:05
阅读次数:
113
在另外的两篇文章中先后介绍了轻量级同步关键字volatile和重量级锁关键字synchronized,这两个关键字是Java语言中进行线程同步的基本方式(当然还有ReentrenLock等显式锁方式)。本文将就Java虚拟机针对同步原语做的一些锁优化进行简单的介绍,同时基于JDK 1.6将这些锁优化 ...
分类:
编程语言 时间:
2020-01-10 20:23:51
阅读次数:
119
1 AQS 简单介绍 AQS 的全称为(AbstractQueuedSynchronizer),这个类在 java.util.concurrent.locks 包下面。 AQS 是一个用来构建锁和同步器的框架,使用 AQS 能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的 Reentran ...
分类:
其他好文 时间:
2020-01-10 12:16:55
阅读次数:
111
单例模式使用非常的广泛,那么你会使用哪几种方式去实现呢? 双重锁检查 /** * 懒汉式-双重检查 */ public class SingleDcl { //一定要使用volatile关键字。 private volatile static SingleDcl singleDcl; private ...
分类:
编程语言 时间:
2020-01-10 00:55:14
阅读次数:
76
如果volatile的修饰的是一个引用类型的对象变量,那么对象中定义的一些普通全局变量是否会受到volatile关键字的效果影响呢?”
接下来,我们就一起来分析下这个问题!让我们先通过一个例子来回顾下volatile关键字的作用!
分类:
其他好文 时间:
2020-01-09 01:36:14
阅读次数:
111
我们前面几张提到过,JUC 这个包里面的工具类的底层就是使用 CAS 和 volatile 来保证线程安全的,整个 JUC 包里面的类都是基于它们构建的。今天我们介绍一个非常重要的同步器,这个类是 JDK 在 CAS 和 volatile 的基础上为我们提供的一个同步工具类。 背景 Abstract ...
分类:
编程语言 时间:
2020-01-08 18:51:46
阅读次数:
82
实际工作中,经常会遇到多线程并发时的类似抢购的功能,本篇描述一个简单的redis分布式锁实现的多线程抢票功能。 直接上代码。首先按照慣例,給出一個错误的示范: 我们可以看看,当20个线程一起来抢10张票的时候,会发生什么事。 package com.tiger.utils; public class ...
分类:
编程语言 时间:
2020-01-06 23:04:29
阅读次数:
117
1. ThreadPoolUtils import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ThreadPoolExecutor; import java.util.concurrent.TimeUn ...
分类:
编程语言 时间:
2020-01-06 14:46:30
阅读次数:
85