摘要: 核心线程数 初始化的时候不会创建,第一个任务过来才按照这个参数生成线程 最大线程数 阻塞队列满了才会使用它,超过它触发拒绝策略 空闲时间 超过空闲时间,线程数降低到核心数目 时间单位 空闲时间的单位 线程工厂 一般默认,可以指定线程名称、线程组之类的参数 阻塞队列 一般需要修改为有界队列,超过核心线 阅读全文
posted @ 2023-07-16 23:54 时间羚羊 阅读(110) 评论(0) 推荐(0) 编辑
摘要: 细究确实没有 阅读全文
posted @ 2023-07-16 19:14 时间羚羊 阅读(2) 评论(0) 推荐(0) 编辑
摘要: 感觉网上很多博客对这个的解释实在太官方了,也没说为什么一定要实现序列化接口。 去看看rpc框架源码,或者java网络编程或者向磁盘进行序列化就知道了。 首先这是个标记接口,就是用来告诉程序某某对象是可序列化对象,像dubbo框架,要传输对象就必须序列化。 网络编程已经告诉你了,想要向另一个网络输出的 阅读全文
posted @ 2023-07-16 16:56 时间羚羊 阅读(5) 评论(0) 推荐(0) 编辑
摘要: 第一种,@EnbaleConfigurationProperties、@ConfigurationProperties组合 第二种,@Value 第三种,spring提供的Environment对象 第四种,直接读配置文件进行分析 阅读全文
posted @ 2023-07-16 13:29 时间羚羊 阅读(12) 评论(0) 推荐(0) 编辑
摘要: 有一篇讲了mvcc的基本原理:https://www.cnblogs.com/benjerry/p/17551031.html 这样就知道最简单的死锁产生原因,就是有两个并发事务,事务1先更新a表某行数据,再更新b表某行数据,事务2先更新b表同行数据,再更新a表同行数据,就非常有可能死锁了。这种易检 阅读全文
posted @ 2023-07-16 13:27 时间羚羊 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 线程本地变量, 基本原理 底层维护一个ThreadLocalMap,key是线程引用,value是我们要设置的变量,使用时需要记得remove防止内存泄露 阅读全文
posted @ 2023-07-16 13:19 时间羚羊 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 光谈论方式的话,太多了,数据库、jvm内存、redis、zookeeper都可以,最常用的是基于redis实现的redission框架 核心原理众多博客讲的很清楚,面试说个大概应该没问题了 第一点,用的reids的setex命令,因为这个命令是原子操作,不会在设置锁的过程中出现意外 第二点,锁过期问 阅读全文
posted @ 2023-07-16 13:07 时间羚羊 阅读(18) 评论(0) 推荐(0) 编辑
摘要: 使用同一把锁的同步代码块分布在两个方法,或者地方,其中一个一个方法调用另一个同步方法不会被阻塞 阅读全文
posted @ 2023-07-16 13:03 时间羚羊 阅读(6) 评论(0) 推荐(0) 编辑
摘要: 拿rabbitmq举例吧 它有两种方案,一个是开启事务,但这种会降低性能; 还有种异步confirm机制,在生产者这边,mq消息成功消费后会有一个异步回调,所以通常会用这个模式。 光做这个常规情况下够了,如果考虑宕机,还有其他极端情况,要开启持久化,和使用数据库记录消息流水。 另外mq自动的ack只 阅读全文
posted @ 2023-07-16 02:05 时间羚羊 阅读(57) 评论(0) 推荐(0) 编辑