![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
我的程序才没有bug!
这个作者很懒,什么都没留下…
展开
-
内部类
内部类其实就是在一个类中进行其他类结构的嵌套 优点: 内部类与外部类可以互相访问彼此的私有域 内部类可以实现Java的单继承局限 内部类可以对同一包中的其他类隐藏起来,仅供外部类使用 内部类与外部类的关系: 对非静态内部类而言,内部类的创建需要依赖外部类的实例化对象,在没有外部类对象之前是无法创建内部类的 内部类是一个相对独立的个体,与外部类不是is-a的关系 内部类可以直接访问外部类的元素...原创 2019-12-20 17:32:24 · 140 阅读 · 0 评论 -
线程池
线程池优点: 1. 降低资源消耗:通过反复利用已创建的线程降低线程创建与销毁带来的损耗 2. 提高响应速度:当任务到达时,无需等待线程创建就可以立即执行 3. 提高线程的可管理型:使用线程池可以统一进行线程分配,调度与监控 线程池的继承关系: ExecutorService(普通调度池核心接口) submit(Callable\Runnable):Future ScheduledExecutor...原创 2019-12-20 09:02:54 · 136 阅读 · 0 评论 -
ReenrantLock源码剖析
重入锁的实现原理 内建锁隐式的支持重入性,synchronized通过获取自增,释放自减的方式实现重入. 重入锁的特性: 线程获取锁时,如果已经获取锁的线程是当前线程直接获取. 因为可以获取N次,所以只有当释放N次后才算真正释放成功. 非公平锁nonfairTryAcquire(): final boolean nonfairTryAcquire(int acquires) { //拿...原创 2019-12-18 18:38:21 · 168 阅读 · 0 评论 -
AQS独占锁源码剖析
Lock JDK1.5之后增加Java.concurrent.locks提供了与内建锁完全不同的实现多线程共享机制,失去了内建锁隐式的加锁与解锁过程,增加了可中断的获取锁以及超时获取锁以及共享锁等内建锁不具备的特性. lock接口的API有以下几种: I . void lock(); / /获取锁 II . void lockInterruptibly()throws InterruptedExc...原创 2019-12-17 21:40:05 · 127 阅读 · 0 评论 -
Synchronized原理及内建锁的优化
synchronized处理同步有两种模式: 同步代码块: 锁 类的实例对象 synchronized(this){ } 锁类对象synchronized(类名.class){ } 锁任何实例对象 String lock = " ";synchronized(lock){ }–全局锁 同步方法: 普通方法+synchronized,锁的是当前对象 静态方法+synchronized,锁的是...原创 2019-12-13 21:25:06 · 114 阅读 · 0 评论 -
JVM内存划分
JVM,即Java虚拟机,是通过软件模拟的具有完整硬件功能,运行在完全隔离环境中的计算机系统.它通过软件模拟Java字节码指令集,JVM只保留了PC寄存器,而普遍的虚拟机有很多寄存器. Java内存划分 Java内存区域一共划分为6块,如下图: 其中,线程私有内存: 1. 程序计数器 程序计数器是比较小的内存空间,它是当前线程所执行的字节码的行号指示器. 若当前线程执行的是Java方法,计数器记...原创 2019-12-07 21:23:20 · 99 阅读 · 0 评论 -
浅谈异常
异常继承图 可以看出,所有的异常都继承自Throwable,Throwable的两个子类分为Error和Exception. Error:就是错误,无法捕捉,是程序无法处理的,如OutOfMemoryError. Exception: RuntimeException:运行时异常,发生在运行期,可以使用try catch来处理,如果不捕获,JVM会自动处理.比如:ClassCastExcepti...原创 2019-12-06 17:25:53 · 89 阅读 · 0 评论 -
十进制与二进制的相互转化
计算机储存数据是以二进制的方式,二进制数据是用0和1两个数码来表示的数。 今天来讲讲十进制怎么转化为二进制. 例如有一个十进制数字200,怎么转化成二进制呢? 128 < 200 < 256,所以把代表128的位 置为1.如下图: 200 - 128 = 72. 又因为 64 < 72 < 128 ,所以把代表64的位 置为1.如下图: 72-64 =...原创 2019-12-02 16:38:44 · 1701 阅读 · 0 评论 -
变量和运算符
数据类型: java中数据类型分为基本数据类型和引用数据类型两种,基本数据类型包含byte,boolean,short,char,int,float,long,double八种,引用数据类型有数组,类,接口等等 原始类型:boolean char byte short int long float double 封装类型:Boolean Cha...原创 2019-11-17 14:35:52 · 76 阅读 · 0 评论