随笔分类 - java
摘要:自旋锁 CAS算法是乐观锁的一种实现,CAS算法中涉及到自旋锁,这里简述一下 CAS算法说明 CAS的单词Compare And Swap(比较并交换),一种知名的无锁算法。无锁编程,即不使用锁实现多线程间的变量同步,也是在线程没有被阻塞时实现变量同步,也叫非阻塞同步(Non-blocking
阅读全文
摘要:悲观锁 总是假设最坏的情况,每次去拿数据都会认为别人会修改,所以每次拿数据的时候都会上锁。这样别人拿这个数据就会阻塞直到它拿到共享锁(共享锁每次只给一个线程使用,其他线程阻塞,用完后再把资源转让给其他线程)。传统的关系型数据库里边就用到了很多类似的锁机制,比如行锁,表锁等,读锁,写锁等,都是在操
阅读全文
摘要:引言 这些分类并不全指锁的状态,有的指锁的特性,有的指锁的设计 公平锁 多个线程按照申请锁的顺序获取锁 非公平锁 多个线程不按照申请锁的顺序获取锁 有可能后申请的线程比先申请的优先获得锁。有可能造成优先级反转h或饥饿现象 对于Java ReentrantLock而言,通过构造函数指定
阅读全文
摘要:概述 Java 8 是一个非常成功的版本,这个版本新增的Stream,配合同版本出现的 Lambda ,给我们操作集合(Collection)提供了极大的便利。 stream是什么? Stream将要处理的元素集合看作一种流,在流的过程中,借助Stream API对流中的元素进行操作,比如:筛选、排
阅读全文
摘要:代理 引入 总结梳理下代理相关的知识点,按照设计模式之代理模式、静态代理、动态代理的思路展开 代理模式 设计模式中的一种,某些情况下客户不想直接访问对象,进而借助中介帮忙完成某项任务,这个中介对象就是代理。 定义:某些原因需要给对象提供代理以控制对象的访问。访问对象不能直接引用目标,代理
阅读全文
摘要:HashMap 数组和链表 这两种数据结构想必都早已耳熟能详,而今天的主角,HashMap也就是基于这两种结构实现的哈希表结构,当然是以前的主角(JDK1.7)。现如今工作中JDK8普及较广,而在8中也将哈希表结构进行了优化,这个后面再深入了解。 数组的特点:查询和修改效率高、插入和删除效率
阅读全文
摘要:概述 Java中hashCode也称哈希码,能将对象根据一定算法转换为32位int值。 和equals配套使用,重写的话需要保持原子性,要么都重写,要么都不重写。equals相同的话哈希值一定相同,哈希值不同的话equals不一定相同,存在hash冲突。 hash冲突 开放定址法:将对象值h
阅读全文