【每周Java技术】2023.06.09 周五 到 06.11 周日

一、06.09 周五

1.1)Java的令牌桶实现

可以实现 RateLimiter

 // 1秒 5个显示令牌桶
 RateLimiter rateLimiter = RateLimiter.create(5);
 while(true) {
 	double rate = rateLimiter.acquire(1);
 	log.info("运行中");
 }
 

这样能保证1秒中只有 5次 "运行中"的输出

1.2)Java的线程池的依赖注入

  • 定义 ThreadPoolExecutor的Bean
	@Configure
	public ThreadPoolExecutorConfig {
		@Bean(name = "commonThreadPoolExecutor")
		public ThreadPoolExecutor initCommonThreadPoolExecutor() {
			ThreadFacutory threadFacutory = new ThreadFacutoryBuild.create().setNamePrefix("common-").build();
			ThreadPoolExecutor threadPoolExecutory = new ThreadPoolExecutor(1, 1, 2, TimeUnit.SECONDS, new LinkedBlockingQueue(), threadFacutory);
			return threadFacutory;
		}
	}
  • 使用
@Autowired
ThreadPoolExecutor commonThreadPoolExecutor;

commonThreadPoolExecutor.executor(() -> {
	log.info("运行中,当前线程: {}", Thread.currentThread.getThreadName());
})

1.3)轻量级实现定时运行

new Timer(true).schedule(new TimeTask() {
	@Override
	public void run() {
		log.info("延迟10秒后,每10分钟运行一次");
	}
}, 10000, 600000);

1.4)MDC日志 trace_id功能

  • 使用 MDC的组件实现 log输出时添加上 trace_id
    MDC.get()
    MDC.put()
    MDC.clear();

生成的随机数可以使用 RandomStringUtils.randomNumber() 来实现

1.5) 所有Bean初始化后执行的操作 SmartLifecycle

1.6)软考-文件索引结构

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值