读写锁是以 ReaderWriterLockSlim 对象作为锁管理资源的,不同的 ReaderWriterLockSlim 对象中锁定同一个文件也会被视为不同的锁进行管理,这种差异可能会再次导致文件的并发写入问题,所以 ReaderWriterLockSlim 应尽量定义为只读的静态对象。 多线程 ...
分类:
编程语言 时间:
2018-08-03 14:34:32
阅读次数:
366
一、内存回收策略和常见概念 常见内存回收策略可以从以下几个维度来理解: 1 串行&并行 串行:单线程执行内存回收工作。十分简单,无需考虑同步等问题,但耗时较长,不适合多cpu。并行:多线程并发进行回收工作。适合多CPU,效率高。2 并发& stop the world stop the world: ...
分类:
编程语言 时间:
2018-08-02 01:49:17
阅读次数:
449
一、源码分析源码分析是一种临界知识,掌握了这种临界知识,能不变应万变,源码分析对于很多人来说很枯燥,生涩难懂。源码阅读,我觉得最核心有三点:技术基础+强烈的求知欲+耐心。我认为是阅读源码的最核心驱动力。我见到绝大多数程序员,对学习的态度,基本上就是这几个层次(很偏激哦):下图是我总结出目前最应该学习的源码知识点:二、分布式架构分布式系统是一个复杂且宽泛的研究领域,学习一两门在线课程,看一两本书可能
分类:
编程语言 时间:
2018-07-30 16:33:49
阅读次数:
173
一 同步类容器同步类容器都是线程安全的,但在某些场景中可能需要加锁来保证复合操作。 符合操作如:迭代(反复访问元素,遍历完容器中所有元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、条件运算。这些复合操作在多线程并发地修改容器时,可能会表现出意外的行为,最经典的ConcurrentModifi ...
分类:
其他好文 时间:
2018-07-30 14:46:20
阅读次数:
173
前言 对于Java多线程,接触最多的莫过于使用synchronized,这个简单易懂,但是这synchronized并非性能最优的。今天我就简单介绍一下几种锁。可能我下面讲的时候其实很多东西不会特别深刻,最好的方式是自己做实验,把各种场景在代码中实验一下,这样发发现很多细节。 volatile 作为 ...
分类:
编程语言 时间:
2018-07-29 18:55:57
阅读次数:
148
package java.util;/** * 1)基于 TreeMap 的 {@link NavigableSet} 接口实现, TreeSet 使用自然顺序或指定的比较器对元素进行排序。 * 2)基本操作 {@code add}、{@code remove}、{@code contains} 的 ...
分类:
其他好文 时间:
2018-07-29 14:09:17
阅读次数:
138
实际项目开发中为了能够给用户更好的体验,有些延时操作我们都会放在子线程中进行。 今天我们就来聊聊多线程在实际项目中的运用。 我们先来看看多线程的基础知识: 1.多线程的原理: 同一时间,CPU只能处理一条线程,也就是只有一条线程在工作。所谓多线程并发(同时)执行, 其实是CPU快速的在多线程之间调度 ...
分类:
移动开发 时间:
2018-07-26 13:19:30
阅读次数:
286
java内存区域 程序计数器 因为java可以多线程并发执行,因此,为了线程切换后能恢复到正确的执行位置,每个线程都需要一个独立的程序计数器。记录正在执行的虚拟机字节码指令的地址。 这个区域不会产生内存溢出异常。 栈 java虚拟机栈 栈中主要存放了编译期可知的四类八种基本数据类型存(逻辑型 boo ...
分类:
其他好文 时间:
2018-07-21 19:51:49
阅读次数:
200
package 多线程并发; import java.util.Stack; /** * Created by z84102272 on 2018/7/17. */ public class BlockQueueImpl { private final static Object pushLock ... ...
分类:
编程语言 时间:
2018-07-17 19:29:22
阅读次数:
155
第1章 课程准备 1-1 课程导学 1-2 并发编程初体验 1-3 并发与高并发基本概念第2章 并发基础 2-1 CPU多级缓存-缓存一致性 2-2 CPU多级缓存-乱序执行优化 2-3 JAVA内存模型 2-4 并发的优势与风险第3章 项目准备 3-1 案例环境初始化 3-2 案例准备工作 3-3 ...
分类:
编程语言 时间:
2018-07-16 23:44:20
阅读次数:
477