Java
文章平均质量分 84
胡宝全
任思想在键盘起舞是一种很爽的感觉!
展开
-
JAVA线程池Executor框架
JAVA线程池为什么用线程池线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。他的主要特点为∶线程复用;控制最大并发数;管理线程。第一∶降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二∶提高响应速度。当任务到达时,任务可以不需要的等到线程创建就能立即执行。第三∶提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资原创 2021-04-24 11:56:22 · 735 阅读 · 0 评论 -
JVM与GC(1)
JVM与GC(1)基本概念JVM 中垃圾的确定与GC Roots简单来说就是内存中已经不再被使用的对象就是垃圾。判断是否是垃圾可以用:引用计数法、枚举根节点做可达性分析。引用计数法:Java中,引用和对象是有关联的。如果要操作对象则必须用引用进行。因此,很显然一个简单的办法是通过引用计数来判断一个对象是否可以回收。简单说,给对象中添加一个引用计数器,每当有一个地方引用它,计数器值加 1,每当有一个引用失效时,计数器值减1。任何时刻计数器值为零的对象就是不可能再被使用的,那么这个对象就是可回收对象。原创 2021-04-24 11:54:40 · 289 阅读 · 0 评论 -
Java日期与时间LocalDate、LocalDateTime
为什么 JDK 1.8 之前的时间与日期 API 不好用?java.util.Date 是从 JDK 1.0 开始提供,易用性差默认是中欧时区(Central Europe Time)起始年份是 1900 年起始月份从 0 开始对象创建之后可修改JDK 1.1 废弃了 Date 中很多方法,新增了并建议使用 java.util.Calendar 类相比 Date 去掉了年份从 1900 年开始月份依然从 0 开始选用 Date 或 Ca原创 2021-04-24 11:46:42 · 1846 阅读 · 0 评论 -
LinkedHashMap底层分析
LinkedHashMap 底层分析众所周知 HashMap.md 是一个无序的 Map,因为每次根据 key 的 hashcode 映射到 Entry 数组上,所以遍历出来的顺序并不是写入的顺序。因此 JDK 推出一个基于 HashMap 但具有顺序的 LinkedHashMap 来解决有排序需求的场景。它的底层是继承于 HashMap 实现的,由一个双向链表所构成。LinkedHashMap 的排序方式有两种:根据写入顺序排序。根据访问顺序排序。其中根据访问顺序排序时,每次 get 都原创 2021-04-24 11:43:45 · 904 阅读 · 0 评论 -
分布式锁之Zookeeper实现
分布式锁之Zookeeper实现锁接口参照一般的Java锁都会有lock()和unlock方法。我们可以先定义一个zookeeper锁的接口:ZKLockInterface.javapackage zklock;public interface ZKLockInterface { void zkLock(); void zkUnlock();}实现锁模板ZKLockAbstractTemplate.javapackage zklock;import com.githu原创 2020-09-20 23:25:37 · 348 阅读 · 0 评论 -
最简单的Java死锁案例
最简单的Java死锁案例package thread.deadlock;public class TestMyDeadLockThread { public static void main(String[] args) { MyDeadLockThread myThread = new MyDeadLockThread(); new Thread(myThread).start(); new Thread(myThread).start();原创 2020-06-25 21:50:33 · 958 阅读 · 0 评论