volatile关键字很重要的两个特性: 1、保证变量在线程间可见,对volatile变量所有的写操作都能立即反应到其他线程中,换句话说,volatile变量在各个线程中是一致的(得益于java内存模型—"先行发生原则"); 2、禁止指令的重排序优化; 所以volatile 并非原子性操作。 Ato ...
分类:
编程语言 时间:
2019-01-28 17:43:27
阅读次数:
204
一、线程按序交替打印 效果展示: 代码实现: package juc; import java.util.concurrent.locks.Condition; import java.util.concurrent.locks.ReentrantLock; public class Alterna ...
分类:
编程语言 时间:
2019-01-20 00:59:06
阅读次数:
195
图解Disruptor框架(一):初识Ringbuffer 概述1、 什么是Disruptor?为什么是Disruptor?Disruptor是一个性能十分强悍的无锁高并发框架。在JUC并发包中,号称是性能最好的ArrayBlockingQueue(简称:ABQ),在Disruptor的面前,也只能... ...
分类:
其他好文 时间:
2018-12-18 00:03:03
阅读次数:
160
1.多线程开发又叫JUC开发(java.util.concurrent),至少5年以上才能涉及到,面试阿里常问 2.线程和进程有什么区别? 1)进程是资源(CUP,内存)分配的最小单位,线程是程序执行的最小单位。 2)一个程序至少有一个进程,一个进程至少有一个线程。 3.多线程的特点 三高:高并发, ...
分类:
编程语言 时间:
2018-12-16 18:12:15
阅读次数:
249
1.使用线程池的好处 2.JUC中几种常用的线程池 java.util.concurrent包下的Executors工厂类,提供了一系列的线程池的创建方法,其构造方法如下: 其中常用的线程池有四种,分别是fixedThreadPool、cachedThreadPool、ScheduledThread ...
分类:
编程语言 时间:
2018-12-11 19:43:10
阅读次数:
218
目录 1 基本实现原理 1.1 如何使用 1.2 设计思想 2 自定义同步器 2.1 同步器代码实现 2.2 同步器代码测试 3 源码分析 3.1 Node结点 3.2 独占式 3.3 共享式 4 总结 Java并发包(JUC)中提供了很多并发工具,这其中,很多我们耳熟能详的并发工具,譬如 ...
分类:
编程语言 时间:
2018-12-05 18:42:08
阅读次数:
221
package com.hls.juc;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * 解决多线程安全问题的方式: 3种 * synchronized: 隐式锁 ...
分类:
编程语言 时间:
2018-11-27 22:11:47
阅读次数:
156
if ((navigator.userAgent.match(/(phone|pad|pod|iPhone|iPod|ios|iPad|Android|Mobile|BlackBerry|IEMobile|MQQBrowser|JUC|Fennec|wOSBrowser|BrowserNG|WebO... ...
分类:
移动开发 时间:
2018-11-23 12:31:48
阅读次数:
251
之前讲了《AQS源码阅读》和《ReentrantLock源码阅读》,本次将延续阅读下ReentrantReadWriteLock,建议没看过之前两篇文章的,先大概了解下,有些内容会基于之前的基础上阅读。这个并不是ReentrantLock简单的升级,而是落地场景的优化,我们来详细了解下吧。背景JUC包里面已经有一个ReentrantLock了,为何还需要一个ReentrantReadWriteLo
分类:
编程语言 时间:
2018-11-16 20:41:44
阅读次数:
192
转自:https://www.cnblogs.com/skywang12345/p/3509941.html 概要 在上一章"Java多线程系列--“JUC线程池”01之 线程池架构"中,我们了解了线程池的架构。线程池的实现类是ThreadPoolExecutor类。本章,我们通过分析ThreadP ...
分类:
编程语言 时间:
2018-11-11 11:46:48
阅读次数:
205