博客
分类
标签
归档
关于
博客
分类
标签
归档
关于
Tau的博客
文章
分类
标签
归档
关于
Java中的异常
参考 Java提高篇——Java 异常处理
2019-10-27
Java
Java
Read More
Java中的内部类
分类 成员内部类 得先创建外部类,然后才能创建内部类。 保存了一个指向外部对象的引用,所以可以访问外部对象的成员。 方法内部类 匿名内部类 匿名类没有名字,继承自父类或者实现了某个接口,它是没有构造器的,因为它连名字都没有。 通过使用实例初始化,就能达到为匿名内部类创建一个构造器的效果(其实就是在定义类的时候在大括号里面再加个大括号写入想要初始化的内容)。 静态内部类(嵌套类 Nested ...
2019-10-22
Java
Java
Read More
Java中的ReentrantReadWriteLock
ReentrantReadWriteLock 看下它的类图 可以看到ReentrantReadWriteLock实现了ReadWriteLock接口。ReadWriteLock就是读写锁的意思,那么问题来了,为什么要有个读写锁呢?为什么要把读锁和写锁分开呢?这里就是出于对性能的考虑了,多个线程之间,可以同时读,但是不可以同时写或者一个读一个写,所以分开之后,读锁和写锁各司其职,可以提高效率...
2019-10-17
Java
Java
Read More
Java中的AQS
AbstractQueuedSynchronizer 简写AQS, 队列同步器,是用来构建锁或者其他同步组件的基础框架,Lock接口的实现,如ReentrantLock等都有它的身影,都是通过它来实现线程同步的。从名字可以看出,首先它是个同步器,其次它里面还有个队列。 AQS使用了模板方法模式,这意味着AQS类里面大体有两种方法:需要被子类重写的涉及到具体细节的方法和模板方法,而模板方法就...
2019-10-17
Java
Java
Read More
Java中的Lock
Lock是JUC包中的一个接口,是在synchronized关键字之后出现的,用来提供锁的功能,本文主要讨论Lock接口以及其实现类,以及为什么有了synchronized关键字了还要有Lock. synchronized作为内嵌的Java关键字,其可以隐式地获取和释放锁,它简化了同步的管理,同时也固化了锁的获取和释放,缺少灵活性。 在Java SE 5 之后,新增了Lock接口(以及相...
2019-10-16
Java
Java
Read More
Java中的final关键字
用法 修饰变量 修饰基本类型:基本类型的值不可被改变 修饰引用:引用的指向不能被改变 被final修饰的基本类型和String类型会在编译器被放到常量池 修饰方法 方法不可被覆盖 修饰类 类不可被继承 原理 我们反编译如下代码: 123456789public final class Tiger { private final String name ="tige...
2019-10-11
Java
Java
Read More
Java中new对象时到底发生了什么
Java中有许多创建对象的方式,比如使用new关键字,使用反射,使用序列化/反序列化,使用克隆,其内部原理也都不一样,本文主要讨论在使用new关键字创建对象的前前后后JVM都做了那些事。要讲清楚这个事情,需要了解一定的JVM内存模型,以及类加载机制。 ###缘起 首先要明白,创建对象这是一个运行期的动作,在运行期前面,还有一个编译期。编译期就是将我们写的java文件编译成class文件的过程...
2019-10-10
Java
Java
Read More
一次由继承引发的思考
本文主要讨论,我在考虑java种private修饰的属性和方法到底有没有被继承下来的一系列思考。 使用反射? 观察class文件? new一个对象时到底发生了啥? 创建一个对象常常需要经历如下几个过程:父类的类构造器() -> 子类的类构造器() -> 父类的成员变量和实例代码块 -> 父类的构造函数 -> 子类的成员变量和实例代码块 -> 子类的构造函数。 先...
2019-10-10
Java
Java
Read More
HashMap中的hash方法
在HashMap,HashTable和ConcurrentHashMap中,hash()方法主要是拿来做定位,即通过对key进行散列,从而确定这个entry的存储位置。但是为了避免发生碰撞,java中的hash方法还是有许多细节操作的。 HashMap jdk 7 代码如下: 1234567891011121314final int hash(Object k) { ...
2019-10-08
Java
Java
Read More
HashMap中的容量
为什么建议初始化容量 真正的容量是多少 为什么是2的次幂
2019-10-08
Java
Java
Read More
Previous
7 / 9
Next