- 博客(14)
- 收藏
- 关注
转载 Java 并发包之线程池综述
■ 线程池的创建 在Java中,您可以通过调整-Xss参数来调节每个线程栈的大小(64bit系统默认1024KB),当减小该值时意味着可以创建更多的线程数,但问题是JVM资源是有限的,线程不能无限创建! 从笔者开发经验来看,线程池应该是并发包中使用频率和运用场景最多的并发框架,几乎所有并发/异步执行任务的需求都需要用到线程池,线程复用,以内部线程池的形式对外提供管理任...
2018-09-04 11:31:00
204
转载 Java 并发之Concurrent 包综述
■ 并发原理 单核系统:线程交替执行,由于交替又快又多,给人一种同时执行的感觉多核系统:不仅可以交替执行线程,而且可以重叠执行线程补充: 本章指的并发主要指的是线程间的并发 ■ 常见的并发机制 ■ 不同系统的并发机制 UNIX:管道、消息、共享内存、信号量、信号 Linux内核:原子操作、自旋锁、信号量、屏障(由于服务器一般都位于Linux服务器上,因此此是...
2018-08-27 12:19:00
212
转载 AQS 框架之 Lock 接口
■前言 - 内存锁的不足 不可中断:使用内部锁(指的是 synchronized) 时,不能中断正在等待获取锁的线程 不可超时:使用内部锁时,在请求锁失败情况下,必须无限等待,没有超时效果 自动释放:使用内部锁时,内部锁必须在获取它们的代码块中被自动释放(虽然对代码来说是种简化且对异常友好) 不可伸缩:使用内部锁时,无法细粒度控制锁(伸缩性不足),即无法实现锁分离和锁联结,...
2018-08-27 10:19:00
192
转载 AQS 框架之 LockSupport 线程阻塞工具类
■ 前言 并发包一直是 JDK 里面比较难理解的,同时也是很精美的语言,膜拜下 Doug Li 大神。作者不敢长篇大论,只求循序渐进地把并发包通过理论和实战 (代码) 的方式介绍给大家。 其实做每一件事都是挺难的,不过只要下笔就不会瞻前顾后。谢谢大家的鼓励帮助,感谢我的好基友KIRA~ 好的,热身先从 LockSupport 开始吧~ ■ LockSupport 综述 ...
2018-02-02 14:40:00
211
转载 JAVA 锁之 Synchronied
■ Java 锁 1. 锁的内存语义 锁可以让临界区互斥执行,还可以让释放锁的线程向同一个锁的线程发送消息 锁的释放要遵循 Happens-before原则(锁规则:解锁必然发生在随后的加锁之前) 锁在Java中的具体表现是 Synchronized 和 Lock 2. 锁的释放与获取 线程A释放锁后,会将共享变更操作刷新到主内存中 线程...
2018-02-01 11:07:00
172
转载 ThreadLocal 线程本地变量
■ ThreadLocal 定义 ThreadLocal通过为每个线程提供一个独立的变量副本解决了变量并发访问的冲突问题 当使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本 在ThreadLocal类中有一个Map,用于存储每一个线程的变量副本,Map中...
2018-01-05 11:28:00
163
转载 HashMap 之弱引用 - WeakHashMap
■ Java 引用的相关知识 1. 强引用 Object o = new Object(); 强引用是Java 默认实现 的引用,JVM会尽可能长时间的保留强引用的存在(直到内存溢出) 当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题:只有当没有任何对象指向它时JVM...
2018-01-02 17:12:00
593
转载 Java内存模型 &Volatile
笔者的 “多线程- 让程序更高效的运行” 关联文 感谢帮助过我的好基友们,一如既往地发布好文,让技术舞动起来 ■ Java 内存模型 1.1 Java 内存模型 Java线程间的通信由Java内存模型(JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见 JMM是一个抽象的概念,并非真实存在,它涵盖了缓存、写缓冲区、寄存器以及其他的...
2017-12-29 17:40:00
111
转载 HashMap - 基于哈希表和 Map 接口的键值对利器 (JDK 1.7)
HashMap 的一些整理: (JDK 1.7) 基于哈希表的Map接口的非同步实现,定义了键映射到值的规则 此实现提供所有可选的映射操作,并允许使用null值和null键 此实现假定哈希函数将元素适当分布在各桶之间,为读取操作提供稳定性能 迭代时间与实例容量(桶的数量)及其大小(键-值映射关系数)成正比 ■ 类定义 public class HashMap<...
2017-10-13 23:47:00
221
转载 LindedList - 双向链表让数据发挥联动
LinkedList的一些认识: 对于锁链的认识还是以前看动画片<圣斗士星矢>中阿舜的武器,锁链被无数次的击碎断裂,然后小宇宙爆发,锁链会自动前后拼接,组成强大的链条。"星云锁链" - 锁链无边无际、攻击范围广,仙女座暴走也是很恐怖的^_^可能我这样比喻并不怎么准确,双向链表也是基于这种前后节点的操作。我的理解是: 继承于AbstractSequentialLi...
2017-10-13 11:56:00
239
转载 多线程- 让程序更高效的运行
Java Thread 的一些认识: Java是抢占式线程,一个线程就是进程中单一的顺序控制流,单个进程可以拥有多个并发任务,其底层是切分CPU时间,多线程和多任务往往是使用多处理器系统的最合理方式 进程可以看作一个程序或者一个应用;线程是进程中执行的一个任务,多个线程可以共享资源 一个Java 应用从main 方法开始运行,main 运行在一个线程内,也被称为 “主线程”,R...
2017-10-12 16:32:00
524
转载 MySQL Base
/* 连接与断开服务器 */ mysql -h 地址 -P 端口 -u 用户名 -p 密码 ---> input pwd /* 数据库存贮引擎 */ InnoDB : 1) 具有提交、回滚和奔溃恢复及事务处理能力(ACID) 2) 能处理大数据量 3) 支持外键约束、关联查询 MyISAM : 1) 支持大文件、...
2017-10-11 18:09:00
123
转载 HashTable —— 线程安全的散列表
HashTable 认识: 底层使用散列表,存贮键值对,键值非null 使用synchronize 保证线程安全 如果多线程高发量,推荐使用 concurrentHashMap; 如无需多线程,可使用 HashMap ■ 重要全局变量 //The hash table data. //底层维护一个Entry(键值对)数组 private transient En...
2017-10-03 21:48:00
129
转载 ArrayList , Vector 数组集合
ArrayList的一些认识: 非线程安全的动态数组(Array升级版),支持动态扩容 实现 List 接口、底层使用数组保存所有元素,其操作基本上是对数组的操作,允许null值 实现了 RandmoAccess 接口,提供了随机访问功能 线程安全可见Vector,实时同步 适用于访问频繁场景,频繁插入或删除场景请选用linkedList ■ 类定义 publ...
2017-10-03 11:33:00
95
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅