摘要:
spring的bean自动装配主要是通过@Autowired注解实现的 (一) bean源代码解析 @Target({ElementType.CONSTRUCTOR, ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD, Elem 阅读全文
摘要:
Spring框架中支持了两种不同形式的IOC容器初始化方式,一种是基于XML的容器初始化,另外一种是基于注解的初始化方式,初始化容器时使用的具体初始化类不同。 基于xml的方式: ClasspathXmlApplicationContext 基于annotation的方式: AnnotationCo 阅读全文
摘要:
这一章主要分析可重入锁ReentrantLock的实现细节 首先展示ReentrantLock实现涉及到的类图 1.AQS简介 AQS即图中的AbstractQueuedSynchronizer类,该类是并发工具类的基础,AQS定义了一套多线程访问共享资源的同步器框架,许多同步类实现都依赖于它,如常 阅读全文
摘要:
一.原子性操作 所谓原子性操作,是指执行一系列操作时,这些操作要么全部执行,要么全部不执行,不存在执行其中一部分的情况。 如果不能保证操作是原子的,那么在多线程情况下,就有可能会存在线程安全问题。 接下来用代码来验证非原子操作在多线程环境下的线程安全问题: public class ThreadSa 阅读全文
摘要:
内存可见性问题 常见的CPU架构如图所示,当一个线程操作共享变量时,首先将该变量从主内存中读取到自己的工作内存(L1,L2 Cache),处理完之后,再将变量写回到主内存中。 现在假设有一个共享变量X,值为0,线程A首先获取变量X的值,由于L1,L2 Cache都没有命中,将从主内存中加载变量X到L 阅读全文
摘要:
1.使用 ThreadLocal是java中的线程本地变量,如果创建了一个ThreadLocal变量,那么多线程中,每个线程都会拥有一个该变量的副本,具体使用方法如下: public class ThreadLocalTest { private static final Logger LOGGER 阅读全文
摘要:
方法1:继承Thread类,并重写run方法 public class DemoTest { private static final Logger LOGGER = LoggerFactory.getLogger(DemoTest.class); public static class Threa 阅读全文
摘要:
重载 在同一类中有两个及以上的方法名相同,但形参列表不同,则为重载(overload), 重载只要求方法名相同,参数列表不一样,即参数类型,顺序,数量任意一个不一样 而方法的修饰符以及返回值不一样,不能称之为重载,java不允许两个方法仅仅只有修饰符或者返回值不一样,这被认为是同一个方法而编译报错。 阅读全文