J.U.C(java.util.concurrent)包的梳理

java.util.concurrent提供了并发编程的解决方案,主要包括两大块:CAS:是java.util.concurrent.atomic包的基础AQS:是java.util.concurre
2020年03月17日 210次浏览

Java 集合框架

数据结构常见考点数组和链表的区别链表的操作:如反转、链表环路检测、双向链表、循环链表以及相关操作队列、栈的应用二叉树的遍历以及其递归和非递归的实现红黑树的旋转算法常见考点内部排序:如递归排序、交换排序
2020年03月17日 187次浏览

Java异常体系

Java从诞生之初就提供了完善的异常处理机制,大大降低了编写和维护可靠程序的门槛。Java的异常处理机制主要回答了3个问题:What:异常类型回答了什么被抛出Where:异常堆栈跟踪回答了在哪里被抛出
2020年03月16日 193次浏览

synchronized 和 ReentrantLock

在Java5之前,只有synchronized一种锁,在Java5之后,增加了ReentrantLock。ReentrantLock位于java.util.concurrent.locks包,和Cou
2020年03月15日 159次浏览

Synchronized 底层实现原理

实现synchronized的基础有两个:Java对象头和Monitor。在虚拟机规范中定义了对象在内存中的布局,主要由以下3部分组成:对象头实例数据对齐填充而synchronized的实现就藏在对象
2020年03月14日 168次浏览

sleep() 和 wait() 的区别,以及 notify() 和 notifyall() 的区别

sleep()是Thread类的方法,wait()是Object类的方法sleep()方法可以在任何地方使用。wait()方法只能在synchronized方法或者synchronized块中使用最主
2020年03月13日 125次浏览

线程的 start 和 run 方法的区别

直接调用线程的run方法,并不会启动一个新的线程,而是在原来的线程里面执行run()方法里面的语句,与普通的方法调用没有差别调用线程的start方法,是启动一个新的线程去执行run()方法里面的代码如
Java 2020年03月11日 168次浏览

进程与线程

进程和线程的由来:串行:初期的计算机只能串行执行任务,并且需要长时间等待用户输入,计算机很多时候只能处于等待的状态批处理:预先将用户的指令集中成清单,批量串行处理用户指令,仍然无法并发执行。当一个任务
2020年03月11日 143次浏览