自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

原创 java 线程池之ThreadPoolExecutor源码注释

在项目当中,会使用到异步执行其他任务的情况。如果每次执行异步操作时,都创建一个线程并销毁,对机器的消耗巨大,创建线程和销毁线程都需要一定的资源。且每个线程只能执行一个任务,无法做到线程的复用。线程池则解决了这一个问题,线程池管理线程的创建销毁。任务过多时会分配新的线程帮助处理任务。接下来将对java提供的线程进行源码解读。

2025-04-11 11:51:06 563

原创 java 线程池之ExecutorCompletionService

ExecutorCompletionService 类将执行完成的结果包装到队列中,供其他线程获取执行结果。获取执行结果是阻塞的方式进行。ExecutorCompletionService在线程池执行invokeAny方法时,包装执行器并将结果存放到阻塞队列中,通过阻塞的方式获取执行结果。如果多执行的节点数据,将取消已经执行的结果。

2025-04-11 10:31:20 281

原创 java线程池之FutureTask

FutureTask 是一个可以被取消的异步。它实现了Future接口中的方法(获取任务执行结果方法、取消任务的方法)。在获取执行结果的过程中,如果当前任务没有完成会阻塞。提供两种方式获取执行结果,一种无限期等待直到任务完成,另一种设置超时时间,在超时时间内没有获取到结果则直接返回,防止一直阻塞。

2025-04-10 14:41:23 557

原创 java 线程池之Future

Future代表一个异步计算的结果。本身提供了检查计算是否完成、等待任务完成以及获取任务计算结果的信息。Future在任务完成的时候,才能通过其本身提供的get方法获取到内部结果,在没有完成的情况下,调用其本身的get方法会造成当前线程的阻塞。本身提供了取消任务执行的方法,但是在任务完成后,无法取消,只是不提供该任务的执行结果。/*** 尝试取消当前任务的执行。如果任务以及完成或者以及被取消则会失败。或者其他原因造成的取消失败* 如果这个任务在没有开始之前被却笑,这个任务不会被执行。

2025-04-09 13:14:07 265

原创 java线程池之AbstractExecutorService

提供默认的Executor接口实现方式。这个类实现了submit、invokeAny、invokeAll。通过newTaskFor 方法包装为一个RunnableFuture 类。newTaskFor 默认返回FutureTask 类。FutureTask类将在一个博客中进行讲解。如下图所示,AbstactExecutorService 是一个抽象类,实现了子类共有的方法。/*** 将Runnable类包装一个具有返回值的FutureTask, 目的是为了线程池执行过程中的任务体一致性*/

2025-04-09 11:52:58 264

原创 java 线程池之ExecutorService

一个执行器,它提供线程池终止的方法,以及可以产生Future来跟踪一个或多个异步任务进度的方法。/*** 启动程序关闭,线程池不会在接收新的任务,但是会将线程池中剩余未执行的任务全部执行完成后,彻底关闭线程池。* 此方法不会等待主动执行的任务终止。使用awaitTermination来完成该操作。*//*** 立马关闭线程池,调用此方法后,线程池中正在执行的任务会尝试中断,未执行的任务会从队列中出栈。返回正在等待执行的任务列表。* 此方法不会等待主动执行的任务终止。

2025-04-09 09:34:11 413

原创 java线程池之Executor类

此类是一个提交Runnable任务的接口类。此接口提供了一种将任务提交和任务执行解耦的机制,包括线程使用、调度等的详细信息。通常使用执行器,而不是显式创建线程。");});在我们使用上面的方式的时候,既要对异步执行的任务体进行包装,还要控制线程的运行状态。而使用线程池作为任务的执行体,我们只需要关注任务体本身,无需过多关注线程的创建、销毁等操作。此方法接收一个任务体,无返回值。

2025-04-09 08:34:42 148

原创 centos 7 安装mysql5.7

1、 选择MySQL Community (GPL) Downloads »。2、选择MySQL Community Server。安装过程中出现如下异常,将mysql的lib包移除。通过官网下载对应的mysql版本,mysql官网。2、切换账号信息,使用root账号进行安装。3、选择对应的操作系统和mysql版本。如果有安装请先卸载,卸载命令如下。1、上传mysql软件包。

2024-04-02 14:17:51 2091 1

原创 虚拟机centos7安装

最近一直在学习mysql,以及mysql的深度课程,为了更好的了解mysql的优化策略,了解mysql的成本计算策略、innodb的内核信息以及mysql的日志信息。虚拟机有很多的网络桥接方式,但是我安装的目的不在于研究它的桥接方式,就使用默认的方式。经过安装后,来到下一步,我们选择系统使用的语言,这里我选择的是英语,如果看不懂英语的可以选择中文。5、选择安装的物理位置,注意安装后文件较大,建议放到空间较大的盘上。注意不要选择有中文,有空格的路径,防止意外的收获。3、选择下载好的镜像,保存到本地。

2024-04-01 20:03:33 432

原创 MyISAM和InnoDB介绍

MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM所改良。虽然性能极佳,但却有一个缺点:不支持事务处理(transaction)。

2024-03-28 21:36:20 672 1

原创 深入探讨数据库可能使用到的数据结构

上述对各种数据结构进行了对比,我们可以得到一个结论,hash表可以用于精准匹配效率比较高,二叉树、红黑树、B树、B+树查找都是二分查找,但是二叉树、红黑树的树高较高,大数据量会造成树的高度较高,也会使得查询效率变慢。叶节点具有相同的深度,叶节点的指针为空。红黑树是一种特殊的二叉树,它是一种平衡的二叉树,所谓平衡,即树中的任意非叶子左右子树都是平衡的。二叉树,也是一种很好的数据结构,它作为索引的最大优势就是可以实现范围查找,并且查找速度也快,有n条数据的前提下,获取到每条数据的时间复杂度为log2(n)。

2024-03-28 20:51:34 971 1

原创 JVM 垃圾回收算法

垃圾回收算法主要有标记复制算法、标记清理算法、标记整理算法和分代理论。

2022-11-12 22:37:35 160

原创 java对象内存分配

众所周知,java对象对象创建分配的地方在堆上,但是jdk8,java对象可以分配在栈上。在栈上为对象分配内存具有一定的条件性,即在栈上对象的生命周期可以随着方法移除栈而死亡才能将对象放入到栈上。

2022-11-10 23:14:25 1140 1

原创 打破双亲委派机制

以上概念就是双亲委派的机制双亲委派机制能够很好的解决类加载重复问题,并且可以很好的保证类加载的安全性。

2022-11-08 19:51:43 841 1

原创 对象创建过程

检查class文件是否符合正常class信息,校验class文件中的标识信息,校验类是否争取。

2022-11-08 18:51:37 162

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除