04 2022 档案
摘要:一、序言 指令重排在单线程环境下有利于提高程序的执行效率,不会对程序产生负面影响;在多线程环境下,指令重排会给程序带来意想不到的错误。 本文对多线程指令重排问题进行复原,并针对指令重排给出相应的解决方案。 二、问题复原 (一)关联变量 下面给出一个能够百分之百复原指令重排的例子。 public cl
阅读全文
摘要:一、序言 在并发编程中,synchronized锁因其使用简单,在线程间同步被广泛应用。下面对其原理及锁升级过程进行探究。 二、如何使用 1、修饰实例方法 当实例方法被synchronized修饰时,通过当前实例调用此方法的所有线程共用一把锁,不同对象调用此方法线程间互不影响。 public cla
阅读全文
摘要:一、序言 本文讲述仅针对 JVM 层次的内置锁,不涉及分布式锁。 锁有多种分类形式,比如公平锁与非公平锁、可重入锁与非重入锁、独享锁与共享锁、乐观锁与悲观锁、互斥锁与读写锁、自旋锁、分段锁和偏向锁/轻量级锁/重量级锁。 下面将配合示例讲解各种锁的概念,期望能够达到如下目标:一是在生产环境中不错误的使
阅读全文
摘要:一、序言 在Web开发中,总有一些接口需要暴露在用户认证前访问,短信发送接口特别是短信验证码注册接口便是其中典型的一类,这类接口具有如下特点: 流量在用户认证之前 流量在用户认证之前,意味着无法获取用户ID等唯一标识符信息对流量限流 手机号未知 手机号未知意味着无法对待发送短信的手机号做精准检测,判
阅读全文
摘要:一、序言 Java多线程编程线程池被广泛使用,甚至成为了标配。 线程池本质是池化技术的应用,和连接池类似,创建连接与关闭连接属于耗时操作,创建线程与销毁线程也属于重操作,为了提高效率,先提前创建好一批线程,当有需要使用线程时从线程池取出,用完后放回线程池,这样避免了频繁创建与销毁线程。 // 任务
阅读全文
摘要:定时任务使用指南 如果你想做定时任务,有高可用方面的需求,或者仅仅想入门快,上手简单,那么选用它准没错。 定时任务模块是对Quartz框架进一步封装,使用更加简洁。 1、引入依赖 <dependency> <groupId>xin.altitude.cms</groupId> <artifactId
阅读全文
浙公网安备 33010602011771号