04 2023 档案

摘要:Atomic 是指一个操作是不可中断的。即使是在多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。所以,所谓原子类说简单点就是具有原子/原子操作特征的类。在java.util.concurrent.atomic下。 根据操作的数据类型,可以将 JUC 包中的原子类分为 4 类: 基本类 阅读全文
posted @ 2023-04-30 17:09 壹索007 阅读(111) 评论(0) 推荐(0) 编辑
摘要:JDK 提供的这些容器大部分在 java.util.concurrent (JUC)包中。//concurrent同时发生的 1.ConcurrentHashMap : 线程安全的 HashMap 在 ConcurrentHashMap 中,无论是读操作还是写操作都能保证很高的性能:在进行读操作时( 阅读全文
posted @ 2023-04-30 17:06 壹索007 阅读(26) 评论(0) 推荐(0) 编辑
摘要:ThreadPoolExecutor 类是Excutor的底层实现 构造方法(4个): public ThreadPoolExecutor(int corePoolSize,//线程池的核心线程数量 int maximumPoolSize,//线程池的最大线程数 long keepAliveTime 阅读全文
posted @ 2023-04-25 23:00 壹索007 阅读(17) 评论(0) 推荐(0) 编辑
摘要:线程池就是管理一系列线程的资源池,其提供了一种限制和管理线程资源的方式。每个线程池还维护一些基本统计信息,例如已完成任务的数量。 池化技术的思想主要是为了减少每次获取资源的消耗,提高对资源的利用率。 线程池的好处:(降低线程创建和销毁的时间成本,提高线程可管理性) 降低资源消耗。通过重复利用已创建的 阅读全文
posted @ 2023-04-22 10:28 壹索007 阅读(20) 评论(0) 推荐(0) 编辑
摘要:AQS全称AbstractQueueSynchronized,抽象同步队列器。 public abstract class AbstractQueuedSynchronizer extends AbstractOwnableSynchronizer implements java.io.Serial 阅读全文
posted @ 2023-04-21 16:58 壹索007 阅读(44) 评论(0) 推荐(0) 编辑
摘要:synchronized 是 Java 中的一个关键字,同步,主要解决的是多个线程之间访问资源的同步性,可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。 在 Java 早期版本中,synchronized 属于 重量级锁,效率低下。这是因为监视器锁(monitor)是依赖于底层的操作系 阅读全文
posted @ 2023-04-21 16:14 壹索007 阅读(47) 评论(0) 推荐(0) 编辑
摘要:什么是悲观锁? 悲观锁总是假设最坏的情况,认为共享资源每次被访问的时候就会出现问题(比如共享数据被修改),所以每次在获取资源操作的时候都会上锁,这样其他线程想拿到这个资源就会阻塞直到锁被上一个持有者释放。 像 Java 中synchronized和ReentrantLock等独占锁就是悲观锁思想的实 阅读全文
posted @ 2023-04-19 23:50 壹索007 阅读(36) 评论(0) 推荐(0) 编辑
摘要:volatile关键字:保证变量的可见性;禁止指令重排序 volatile(不稳定的)如何保证变量的可见性: 在 Java 中,volatile 关键字可以保证变量的可见性,如果我们将变量声明为 volatile ,这就指示 JVM,这个变量是共享且不稳定的,每次使用它都到主存中进行读取(也就是标志 阅读全文
posted @ 2023-04-19 22:53 壹索007 阅读(25) 评论(0) 推荐(0) 编辑
摘要:CPU缓存模型: CPU缓存为了解决CPU处理速度和内存处理速度不对等的问题,内存缓存的是硬盘数据用于解决硬盘访问速度过慢的问题。 指令重排序: 为了提升执行速度/性能,系统在执行代码的时候并不一定是按照你写的代码的顺序依次执行。 编译器优化重排 :编译器(包括 JVM、JIT 编译器等)在不改变单 阅读全文
posted @ 2023-04-19 22:31 壹索007 阅读(450) 评论(0) 推荐(0) 编辑
摘要:1.进程和线程 进程是资源分配和程序运行的基本单位,线程是能够进行运算调度的最小单位。 一个进程中可以并发多个线程,每条线程并行执行不同的任务。 2.进程与线程的关系,区别及优缺点 一个进程中可以有多个线程,多个线程共享进程的堆和方法区 (JDK1.8 之后的元空间)资源,但是每个线程有自己的程序计 阅读全文
posted @ 2023-04-19 16:05 壹索007 阅读(130) 评论(0) 推荐(0) 编辑
摘要:ConcurrentHashMap:线程安全的HashMap 1.7 JDK 1.7 中 的 ConcurrentHashMap 采用了分段锁的设计,只有在同一个分段内才存在竞态关系,不同的分段锁之间没有锁竞争。相比于对整个 Map 加锁,分段锁大大提高了高并发环境下的处理能力。 Concurren 阅读全文
posted @ 2023-04-19 15:58 壹索007 阅读(68) 评论(0) 推荐(0) 编辑
摘要:== 和 equals() 的区别 ·== 对于基本类型和引用类型的作用效果是不同的: 对于基本数据类型来说,== 比较的是值。 对于引用数据类型来说,== 比较的是对象的内存地址。 因为 Java 只有值传递,所以,对于 == 来说,不管是比较基本数据类型,还是引用数据类型的变量,其本质比较的都是 阅读全文
posted @ 2023-04-19 15:34 壹索007 阅读(24) 评论(0) 推荐(0) 编辑
摘要:HashMap:线程不安全,key无序不可重复,value无序可重复 HashMap 可以存储 null 的 key 和 value,但 null 作为键只能有一个,null 作为值可以有多个。 JDK1.8 之前 HashMap 由 数组+链表 组成的,数组是 HashMap 的主体,链表则是主要 阅读全文
posted @ 2023-04-17 23:43 壹索007 阅读(73) 评论(0) 推荐(0) 编辑
摘要:Java几种基本数据类型: byte(字节)、short(2字节)、int(4字节)、long(8字节)、float(4字节)、double(8字节)、char(2字节)、boolean(1位) 区别: 用途:除了定义一些常量和局部变量之外,我们在其他地方比如方法参数、对象属性中很少会使用基本类型来 阅读全文
posted @ 2023-04-17 23:14 壹索007 阅读(19) 评论(0) 推荐(0) 编辑
摘要:Java语言特点: · 面向对象(封装,继承,多态); · 平台无关性( Java 虚拟机实现平台无关性); · 支持多线程( C++ 语言没有内置的多线程机制,因此必须调用操作系统的多线程功能来进行多线程程序设计,而 Java 语言却提供了多线程支持); · 支持网络编程并且很方便( Java 语 阅读全文
posted @ 2023-04-17 23:11 壹索007 阅读(135) 评论(0) 推荐(0) 编辑
摘要:JVM(Java Virtue Machine)是运行 Java 字节码的虚拟机。JVM 有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的 JVM 实现是 Java 语言“一次编译,随处可以运行”的关键所在。JVM 阅读全文
posted @ 2023-04-17 23:04 壹索007 阅读(97) 评论(0) 推荐(0) 编辑
摘要:浅拷贝:浅拷贝会在堆上创建一个新的对象(区别于引用拷贝的一点),不过,如果原对象内部的属性是引用类型的话,浅拷贝会直接复制内部对象的引用地址,也就是说拷贝对象和原对象共用同一个内部对象。 深拷贝 :深拷贝会完全复制整个对象,包括这个对象所包含的内部对象。 引用拷贝:就是两个不同的引用指向同一个对象。 阅读全文
posted @ 2023-04-17 22:58 壹索007 阅读(43) 评论(0) 推荐(0) 编辑
摘要:1.封装 封装是指把一个对象的状态信息(也就是属性)隐藏在对象内部,不允许外部对象直接访问对象的内部信息。但是可以提供一些可以被外界访问的方法来操作属性。 2.继承 继承是使用已存在的类的定义作为基础建立新类的技术,新类的定义可以增加新的数据或新的功能,也可以用父类的功能,但不能选择性地继承父类。通 阅读全文
posted @ 2023-04-17 22:57 壹索007 阅读(8) 评论(0) 推荐(0) 编辑
摘要:ArrayList底层是数组队列,相当于动态数组。 在增加大量元素前,应用程序可以使用ensureCapacity操作来增加ArrayList实例的容量。 ArrayList继承于AbstractList,实现了List,RandomAccess,Cloneable,java.io.Serializ 阅读全文
posted @ 2023-04-17 22:56 壹索007 阅读(44) 评论(0) 推荐(0) 编辑
摘要:区别: comparator接口实际上是出自java.util包,它有一个compare(Object obj1, Object obj2)方法用来排序(比较器) comparable接口实际上是出自java.lang包,它有一个compareTo(Object obj)方法用来排序(排序接口) C 阅读全文
posted @ 2023-04-17 21:22 壹索007 阅读(22) 评论(0) 推荐(0) 编辑
摘要:Set:无序不可重复(独一无二) HashSet:HashMap LinkedHashSet:LinkedHashMap(哈希表+链表),元素插入和取出顺序满足FIFO TreeSet:红黑树(自平衡二叉排序树) 三者异同: 都是set接口的实现类,所以都能保证数据的唯一性,并且都不是线程安全的(使 阅读全文
posted @ 2023-04-17 20:35 壹索007 阅读(23) 评论(0) 推荐(0) 编辑
摘要:1.抽象类 class Animal //创建一个动物类:父类 { String name; int age; public void cry() //动物会叫 { System.out.println("不知道怎么叫!"); //可是我们不知道它怎么叫 } } class Dog extends 阅读全文
posted @ 2023-04-17 19:54 壹索007 阅读(83) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示