- 博客(8)
- 收藏
- 关注
原创 ReentrantLock
默认非公平锁ReentrantLock lock = new ReentrantLock(true);公平锁不会产生饥饿锁,只要排队等待,最终能等待到获取锁的机会
2018-07-25 16:21:46
100
原创 HashMap
数组和链表,无序,默认大小为16,负载因子0.75,翻倍扩容;JDK8中引入了红黑树。而当链表长度太长(默认超过8)时,链表就转换为红黑树,利用红黑树快速增删改查的特点提高HashMap的性能,其中会用到红黑树的插入、删除、查找等算法LinkedHashMap 默认按插入顺序访问,new LinkedHashMap<String, String>(16,0.75f,true);...
2018-07-17 15:56:11
149
原创 native
Java不是完美的,Java的不足除了体现在运行速度上要比传统的C++慢许多之外,Java无法直接访问到操作系统底层(如系统硬件等),为此Java使用native方法来扩展Java程序的功能。 可以将native方法比作Java程序同C程序的接口,其实现步骤: 1、在Java中声明native()方法,然后编译 2、用javah产生一个.h文件; 3、写一个.cpp文件实现...
2018-07-13 17:01:30
151
原创 switch
java1.7中支持switch比较字符串从反编译后的字节码文件中可以看出 原来用在 switch 语句中的字符串被替换成了对应的哈希值,而 case 子句的值也被换成了原来字符串常量的哈希值。经过这样的转换,Java 虚拟机所看到的仍然是与整数类型兼容的类型。在 case 子句中仍然保留 equals 方法来进行字符串比较,因为哈希函数在映射的时候可能存在冲突,多个字符串的哈希值可能是一样的。进...
2018-07-13 16:32:42
429
转载 static
被static关键字修饰的方法或者变量不需要依赖于对象来进行访问,只要类被加载了,就可以通过类名去进行访问。static可以用来修饰类的成员方法、类的成员变量,另外可以编写static代码块来优化程序性能参考:https://www.cnblogs.com/dolphin0520/p/3799052.html...
2018-07-13 15:36:22
92
原创 volatile
volatile真正解决的问题是 JVM 在server模式下, 线程优先取用自己的线程私有stack中的变量值, 而不是公共堆中的值, 造成值老旧的问题;volatile强制要求了所有线程在使用变量的时候要去公共内存堆中获取值, 不可以偷懒使用自己的volatile不会像锁一样造成阻塞,要求对变量的写操作不依赖于当前值,适用场景:状态等 volatile绝对不保证原子性, 原子性只能...
2018-07-13 15:23:20
104
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人