一.概述 线程池,顾名思义就是存放线程的池子,池子里存放了很多可以复用的线程。 如果不用类似线程池的容器,每当我们需要执行用户任务的时候都去创建新的线程,任务执行完之后线程就...
一.简介 jdk中独占锁的实现除了使用关键字synchronized外,还可以使用ReentrantLock。虽然在性能上ReentrantLock和synchronized...
一.概述 Java中所有多线程的实现,均通过封装Thread类实现,所以通过源码深入研究Thread类,对深入理解java多线程很有必要,本文Thread类源码均基于JDK ...
一.简介 join()是Thread类的一个方法,根据jdk文档的定义,join()方法的作用,是等待这个线程结束,即当前线程等待另一个调用join()方法的线程执行结束后再...
一.概念 Java中使用ThreadGroup类来代表线程组,表示一组线程的集合,可以对一批线程和线程组进行管理。可以把线程归属到某一个线程组中,线程组中可以有线程对象,也可...
一.Java创建线程的三种方式 Java中创建线程主要有三种方式:1.继承Thread类2.实现Runnable接口3.使用Callable和Future 1.继承Thead...
一.HashMap概述 HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保...
一.Object类中的equals和hashCode 众所周知,equals和hashCode是java.lang.Object类的两个重要方法,下面这段代码是Object类...
一.问题 众所周知,HashMap是线程不安全的,在并发使用HashMap时很容易出现一些问题,其中最典型的就是并发情况下扩容之后会发生死循环,导致CPU占用100%。同时,...
【题目】 题目来源于头条面试的一道算法题,如下: 其实这道题跟剑指offer上一道面试题很类似,原题如下: 【思路】 既然输入的数组是排序的,那么我们很自然地就能想到用二分查...
一.LeetCode198.打家劫舍 1.题目链接 https://leetcode-cn.com/problems/house-robber/ 2.题目 你是一个专业的小偷...
一.页面置换算法 三种常见的页面置换算法:FIFO、LFU、LRU参考:缓存算法(页面置换算法)-FIFO、LFU、LRU 二.LRU算法 1.什么是LRU算法 LRU(Le...
【题目】给定无序数组 arr, 返回其中最长的连续序列的长度. 【举例】arr=[100,4,200,1,3,2], 最长的连续序列为 [1,2,3,4],所以返回 4. 【...
@CooooSo 皮
String类的不可变性一.原理(为什么说String类是不可变的) 1.什么是不可变对象 如果一个对象在创建之后就不能再改变它的状态,那么这个对象是不可变的(Immutable)。不能改变状态的意...
一.定义 单一职责原则(Single Responsibility Principle, SRP),有且仅有一个原因引起类的变更。 二.问题由来 类T负责两个不同的职责:职责...