随笔分类 - Java
摘要:本文章主要讨论和回答一下几个问题: equals()的四大特性 equals()和hashcode()之间的关系,为什么我们经常说这两个方法要么都重写,要么都不重写? HashMap、HashSet等容器为什么要求一定要重写equals()以及hashcode() equals() equals和h
阅读全文
摘要:为什么需要分布式锁 引入经典的秒杀情景,100件商品供客户抢。如果是单机版的话,我们使用synchronized 或者 lock 都可以实现线程安全。但是如果多个服务器的话,synchronized 和 lock 就不管用了(废话,怎么可能管用,都不在同一段代码了)。 分布式锁就是被设计出来实现多个
阅读全文
摘要:参考资料: JVM虚拟机入门教程-陈树义 JavaGuide 《深入理解Java虚拟机》 面经: 个人整理 - Java 后端面试题 - JVM 篇 阿里 Java 实习十轮面试面经 1. 讲一下JVM内存模型(运行时数据区) JVM内存模型分为两部分:线程共享和线程私有 JDK1.8之后方法区被元
阅读全文
摘要:什么是线程不安全 我对线程安全的理解就是多个线程同时操作一个共享变量时会产生意料之外的情况,这种情况就是线程不安全。注意:只有写操作才可能出现线程不安全,对共享变量只进行读操作线程是绝对安全的。 具体线程不安全的例子有一个很经典的就是两个线程都对一个共享变量x=0执行100次自增操作,但是x的结果并
阅读全文
摘要:为什么要使用线程池 创建/销毁线程需要消耗系统资源,线程池可以复用已创建的线程。 控制并发的数量。并发数量过多,可能会导致资源消耗过多,从而造成服务器崩溃。(主要原因) 可以对线程做统一管理。 JUC下线程池的体系结构 创建线程池的两种方法 使用ThreadPoolExecutor的构造方法创建 p
阅读全文

浙公网安备 33010602011771号