自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 资源 (1)
  • 收藏
  • 关注

原创 ThreadPoolExecutor线程池execute和submit的区别

结论基本没有区别,在submit方法中仍然是调用的execute方法进行任务的执行或进入等待队列或拒绝。submit方法比execute方法多的只是将提交的任务(不管是runnable类型还是callable类型)包装成RunnableFuture然后传递给execute方法执行。源码对比①、execute源码public void execute(Runnable command) { if (command == null) throw new NullPoin.

2021-08-30 10:12:01 9020

原创 调用ThreadPoolTaskExecutor的shutdown方法一定会让正在执行的线程任务执行完毕吗

先给答案不一定,要想在调用ThreadPoolTaskExecutor.shutdown方法的时候让线程池等待正在执行的任务执行完毕后再关闭,需要手动设置waitForTasksToCompleteOnShutdown属性值为true。这里讨论的是在基于JVM不关闭的情况下调用ThreadPoolTaskExecutor.shutdown方法,如果JVM正在关闭的情况分析可参考:线程池shutdown和shutdownNow原理和区别JVM关闭的时候到底会不会等待线程池线程任务执行完毕注意

2021-08-28 12:08:32 7883

原创 JVM关闭的时候到底会不会等待线程池线程任务执行完毕

线程池的shutdown()方法和shutdownNow()方法起到的作用只是将每个线程内部的中断状态变为true,表示该线程收到过中断信号。并不能实际的停止线程,也就是说只能够起到一个通知的作用!其实这个问题的答案很容易知道,反向想一想,如果JVM关闭的时候如果真的需要等待每一个正在执行任务的线程执行完毕才完全关闭,那么如果有的任务执行非常耗时(或者直接就是死循环),那岂不是JVM永远不能退出了。这里主要是探究在JVM关闭过程中的动作,以及如果关闭过程中存在一直运行的任务会如何处理。shutdo..

2021-08-27 21:03:46 3909 1

原创 线程池shutdown和shutdownNow原理和区别

说明:以ThreadPoolExecutor线程池为例说明整个流程(不同的线程池实现上略有差别)。一、shutdown流程1、流程简介修改线程池状态为SHUTDOWN再接收新提交的任务中断线程池中空闲的线程第③步只是中断了空闲的线程,但正在执行的任务以及线程池任务队列中的任务会继续执行完毕二、shutdownNow流程1、流程简介修改线程池状态为SHUTDOWN不再接收任务提交尝试中断线程池中所有的线程(包括正在执行的线程)返回正在等待执行的任务列表 List<Run

2021-08-27 15:24:48 4535

原创 java实现redis动态切换db

一、如何实现具体实现代码gitee:https://gitee.com/mr_wenpan/basis-enhance/tree/master/enhance-boot-data-redis1、实现流程通过研究源码我们知道,spring-data-redis为我们提供的RedisTemplate默认是操作application.yml配置文件中的指定的redis db(如果没有指定则默认操作0号db)如果要操作不同的db需要重置RedisTemplate中对于redis server的连接

2021-08-12 14:30:02 3729 5

原创 redis分布式锁实现---源码分析

一、回顾一下分布式锁的基本使用方式①、注入redissonClient客户端②、通过redissonClient客户端获取锁对象rLock③、通过rLock尝试获取锁// ①、注入redissonClient客户端@Autowiredprivate RedissonClient redissonClient;public boolean getLock() { // ②、通过redissonClient客户端获取锁对象rLock(RedissonLock实现默认是可重入锁)

2021-08-02 10:53:22 504

原创 redis分布式锁实现---基于redisson封装自己的分布式锁

一、介绍对于使用Redis做分布式锁的简单实现,在上篇我们已经介绍了如何通过Redis命令 + lua脚本来一步步的实现一个简单的分布式锁。并且对于每种实现方案的优缺点进行了逐一分析。其实这些缺陷也是Redis做分布式锁的常见缺点。在生产上我们一般不会自己从头开始去实现一个分布式锁,毕竟需要考虑的问题以及成本太高了。好在已经有很多框架帮我们实现好了各种分布式锁(比如Redisson),一般来说在我们自己的产品中只需要将redisson提供的相关功能进行封装,提供一些动态配置项来适配redisson提供的

2021-08-02 10:43:14 1677

乐优商城项目.sql

乐优商城项目sql文件,可直接mysql中导入该sql文件执行一下即可。

2019-10-25

空空如也

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

TA关注的人

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