
java基础
文章平均质量分 90
该专栏的受众群体是广泛的,包括Java技术爱好者、初学者和进阶者。我们相信,通过阅读该专栏,读者可以更好地掌握Java编程技术,提高自己的编程水平和实战能力。
Android西红柿
CSDN内容合伙人、技术专家 , 从零开始做日活千万级APP。
专注于分享各领域原创系列文章 ,擅长java、移动开发、人工智能等 希望大家多多支持
展开
-
Java对象逃逸
关于作者:CSDN内容合伙人、技术专家, 从零开始做日活千万级APP。专注于分享各领域原创系列文章 ,擅长java后端、移动开发、商业变现、人工智能等,希望大家多多支持。未经允许不得转载。原创 2023-11-24 22:10:34 · 1400 阅读 · 75 评论 -
CyclicBarrier线程同步
CyclicBarrier是JDK提供的一个同步工具,它的作用是让一组线程全部达到一个状态之后再全部同时执行。原创 2023-10-21 18:10:16 · 1094 阅读 · 100 评论 -
Java内存泄漏知识(软引用、弱引用等)
- 强引用:平时常用的引用类型,JVM发生OOM也不会回收这部分引用。如果强引用对象不使用时,需要弱化从而使GC能够回收,如 object = null;- 软引用(SoftReference):**发生OOM前(jvm内存不足时)会回收这部分引用**,如果想使用缓存,可以使用 LruCache,而不是SoftReference如果一个对象只具有软引用,则内存空间充足时,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以被程序使用。原创 2023-09-27 20:05:36 · 917 阅读 · 101 评论 -
ScheduledThreadPoolExecutor 及 ThreadPoolExecutor的基本使用及说明
ScheduledThreadPoolExecutor 及 ThreadPoolExecutor原创 2023-07-29 14:27:11 · 2116 阅读 · 141 评论 -
线程池的使用、工作原理和优势
线程池 ,在Java中,创建和销毁线程开销较大,为了避免线程过多而带来使用上的开销。所以我们需要对线程进行统一管理及复用,这就是我们要说的线程池。原创 2023-07-28 09:02:17 · 1343 阅读 · 225 评论 -
探索Java并发编程利器:LockSupport,一种高效的线程阻塞与唤醒机制
LockSupport 是 Java SE 9 及以上版本中引入的一个线程同步工具类,用于支持同步方法,提供了多种同步机制.LockSupport 所有的方法都是静态方法,可以让线程在任意位置阻塞,阻塞之后也有对应的唤醒方法。LockSupport 底层调用的是Unsafe中的native代码。java.util.concurrent并发包下很多并发类的底层加锁都是基于LockSupport,如ReentrantLock、CountDownLatch、ParkableLazyDeque 等。原创 2023-07-23 12:29:34 · 879 阅读 · 85 评论 -
CPU密集型和IO密集型任务的权衡:如何找到最佳平衡点
CPU密集型与I/O密集型是在计算机上执行任务的两种策略,在并发执行任务场景下,我们需要选择使用多线程或多进程;如果是IO密集型任务,使用多线程,线程越多越好;如果是CPU密集型任务,使用多进程,线程数量与CPU核心数匹配。原创 2023-07-20 09:05:26 · 73351 阅读 · 288 评论 -
学Java线程,你不知道什么是AQS?一文带你了解Java多线程同步的灵魂
AQS 定义了同步器的基本操作,如获取、释放和状态管理,并提供了一个等待队列来管理等待资源的线程,解决了在实现同步器时涉及的大量细节问题,例如自定义标准同步状态、FIFO 同步队列。原创 2023-07-12 06:45:00 · 5481 阅读 · 216 评论 -
解锁Java多线程安全的秘密武器:探索ThreadLocal的神奇力量!
ThreadLocal是Java中的一个类,用于在多线程环境下,为**每个线程**提供**独立的变量副本**。每个线程都可以独立地访问自己的变量副本,因为该独立变量属于**当前线程**,对其他线程而言是隔离的,不会与其他线程的副本产生冲突。原创 2023-07-14 06:15:00 · 1357 阅读 · 156 评论 -
【Java基础】CAS (Compare And Swap) 操作
CAS其实就是Compare And Swap的一个缩写,顾名思义就是比较并交换,其实就是把当前值与你预期的值进行一个比较,是一种用于在多线程环境下实现同步功能的机制。原创 2023-07-08 08:31:31 · 3121 阅读 · 151 评论 -
【Java基础】线程同步类 CountDownLatch
CountDownLatch是JDK提供的一个同步工具,它可以让一个或多个线程等待,一直等到其他线程中执行完成一组操作。原创 2023-07-05 09:29:44 · 3984 阅读 · 155 评论 -
【Java基础】volatile关键字
关于作者:CSDN内容合伙人、技术专家, 从零开始做过日活千万级APP。专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。原创 2023-06-30 09:24:42 · 4922 阅读 · 140 评论 -
【java 基础三 】- 正则表达式、枚举、equals等
Java正则表达式是一种用来匹配和解析字符串的工具,它提供了一种强大的方式来查找、处理和操作文本数据。在Java中,正则表达式通常使用java.util.regex包下的类进行支持。Java正则表达式的基本结构由一个模式(Pattern对象)和一组规则(Matcher对象)组成,其中模式描述了要匹配的文本模式,规则定义了匹配的模式如何被解析和应用。原创 2023-06-12 11:41:53 · 1311 阅读 · 72 评论 -
【java 基础一】 纯语法基础记录
Java 变量是程序中存储数据的容器。在 Java 中,变量需要先声明再使用,并且必须先声明再赋值。变量类型:Java 中的变量类型可以分为基本数据类型和引用数据类型。基本数据类型包括:byte、short、int、long、float、double、char 和 boolean。引用数据类型包括:类、接口、数组等。变量作用域:Java 中的变量作用域可以分为局部作用域、成员作用域和静态成员作用域。局部作用域指的是在方法或代码块中声明的变量,成员作用域指的是在类中声明的变量,原创 2023-05-29 19:51:56 · 1004 阅读 · 17 评论 -
【Java基础】jvm 堆、栈、方法区 & java 内存模型
在进入主题前,我们先了解一些相关的知识,方面后面对运行时数据区进行分类。进程中,有很多数据是多线程之间共享的,线程在执行时,会先从主存中读取数据,然后复制一份到高速缓存中,当计算完后,再刷新到主存中。我们只要找到独属于线程的资源,那么其他的资源都是线程共享的,线程运行的本质就是函数的执行,函数运行时的信息保存在中,栈帧中保存了函数的返回值、调用其它函数的参数、java方法、局部变量、操作数栈、动态链接、方法出口、寄存器信息等。原创 2023-05-26 10:54:07 · 2519 阅读 · 12 评论 -
【Java基础】线程相关基础知识
中央处理器(central processing unit, 简称cpu ),计算机系统的 运算 和 控制 核心。原创 2023-05-19 15:53:21 · 1135 阅读 · 15 评论 -
【Java基础】细说java动态代理及使用场景
Java代理模式是一种结构型设计模式,它允许通过创建一个代理对象来间接访问另一个对象,从而控制对原始对象的访问。原创 2023-05-16 17:53:27 · 2934 阅读 · 15 评论 -
【Java基础】线程的原子性、可见性、有序性及线程安全知识整理
一个操作或者多个操作,要么全部执行,并且执行的过程不会被打断, 要么就全部不执行(一个操作是不可被分割的)。Java中实现线程原子性主要有两种方式:1、互斥锁:在同一时刻只允许一个线程对共享资源进行访问和操作,而其他线程则需要等待锁的释放才能继续执行。如:synchronized和ReentrantLock等机制来实现锁的获取、释放和等待。原创 2023-05-10 19:47:17 · 1828 阅读 · 10 评论 -
【Java 基础】Java SPI 二 之 Java APT原理及APT实战 - 一步步教你写ButterKnife
AbstractProcess 和 APT(Annotation Processing Tool)之间有关联,因为 AbstractProcess 是 APT 中的一部分。APT 是一个工具,它可以在编译 Java 代码时处理注释,并生成额外的代码。APT使用Java规范中定义的“处理器”来实现这些任务,而处理器则必须扩展AbstractProcessor类。因此,可以将AbstractProcessor类视为APT中处理器的基础类。android、注解原创 2023-05-09 19:17:17 · 5151 阅读 · 83 评论 -
【Java基础】学java注解,看这一篇文章就够了
注解是一种标记,使类或接口附加额外信息,帮助编译器和 JVM 完成一些特定功能。Annotation(注解)也被称为元数据(Metadata)是JDK1.5及以后版本引入的,用于修饰包、类、接口、字段、方法参数、局部变量等。如:常见的 @Override、@Deprecated和@SuppressWarnings其核心思想是java的ioc(inversion of control),也叫di(dependency injection,依赖注入),是一种面向对象编程中的设计模式。原创 2023-05-08 10:50:35 · 2819 阅读 · 19 评论 -
【Java基础】java-android面试Synchronized
每个对象都有个监视器锁(monitor) ,当monitor被占用的时候就代表对象处于锁定状态,而monitorenter指令的作用就是获取monitor的所有权,monitorexit的作用是释放monitor的所有权。synchronized是Java的关键字,可用于同步实例方法、类方法(静态方法)、代码块。sychronized是非公平线程安全的,具有可见性、有序性,有原子性。synchronized是依赖于 JVM来实现同步的。同步实例方法、类方法(静态方法)、代码块。原创 2023-04-24 22:08:40 · 798 阅读 · 3 评论 -
【Java基础】java可见性之 Happens-before
java线程中可见性规则。原创 2023-04-23 19:27:43 · 541 阅读 · 3 评论 -
【Java基础】java-android面试-线程状态
开篇一张图(本图来源于网络),余下全靠编,我们正式开始。总共有6种状态,分别如下:1. 新建状态(New): 线程对象被创建后,就进入了新建状态。例如,Thread thread = new Thread()。2. 就绪状态(Runnable): 也被称为“可执行状态”。线程对象被创建后,其它线程调用了该对象的start()方法,从而来启动该线程。例如,thread.start()。处于就绪状态的线程,随时可能被CPU调度执行。3. 运行状态(Running) : 线程获取CPU权限进行执行。原创 2023-04-25 19:42:39 · 624 阅读 · 2 评论 -
【Java基础】java 异常
只有finally块,执行完成之后,才会回来执行try或者catch块中的return或者throw语句,如果finally中使用了return或者throw等终止方法的语句,则就不会跳回执行,直接停止。都是RuntimeException类及其子类异常,如NullPointerException(空指针异常)、ClassCastException、IndexOutOfBoundsException(下标越界异常)等,这些异常是不检查异常,程序中可以选择捕获处理,也可以不处理。Exception(异常)原创 2023-04-28 20:41:18 · 917 阅读 · 3 评论 -
【Java基础】java 泛型知识整理
泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。与非泛型代码相比,使用泛型有三大优点:更健壮(在编译时进行更强的类型检查)、更简洁(消除强转,编译后自动会增加强转)、更通用(代码可适用于多种类型)* 适用于多种数据类型执行相同的代码(代码复用)原创 2023-05-02 20:40:01 · 1180 阅读 · 6 评论 -
【Java基础】Java 反射知识及实战
Java 反射(Reflection)是指在运行时动态地获取类的信息、调用方法、获取属性等,从而实现运行时的类型检查、动态代码生成、设置和操作类的信息等功能。(动态获取的信息以及动态调用对象)。有两个特点:1、对于任意一个类,都能够知道这个类的所有属性和方法;2、对于任意一个对象,都能够调用它的任意一个方法和属性;通俗的说,反射就是把java类中的各种成分映射成一个个的Java对象。一个类有:成员变量、方法、构造方法、包等等信息,利用反射技术可以对一个类进行解剖,把个个组成部分映射成一个个对象。原创 2023-04-29 22:13:42 · 1092 阅读 · 2 评论