摘要: 0、概述 ThreadLocal,即线程本地变量。它是将变量绑定到特定的线程上的“入口“,使每个线程都拥有改变量的一个拷贝,各线程相同变量间互不影响,是实现共享资源的轻量级同步。 下面是个ThreadLocal使用的实例,两个任务共享同一个变量,并且两个任务都把该变量设置为了线程私有变量,这样,虽然 阅读全文
posted @ 2017-11-20 15:38 MoonGeek 阅读(732) 评论(0) 推荐(0) 编辑
摘要: 0、概述 synchronized是Java提供的内置的锁机制,来实现代对码块的同步访问,称为内置锁(Intrinsic Lock) 。内置锁包括两部分:一个是作为锁的对象的引用,另一个是由这个锁保护的代码块。需要理解的是,synchronized的锁都是对象的引用,同一个对象只有一个内置锁,不同的 阅读全文
posted @ 2017-11-19 09:53 MoonGeek 阅读(457) 评论(0) 推荐(1) 编辑
摘要: 任务和线程的启动很容易。在大多数情况下我们都会让他们运行直到结束,或是让他们自行停止。但是,有时我们希望提前结束任务或是线程,可能是因为用户请求取消,或是线程在规定时间内没有结束,或是出现了一些问题迫使线程要提前结束。 强制一个线程或是服务立即停止,可能会造成共享数据状态不一致的问题,比如,两个线程 阅读全文
posted @ 2017-11-18 20:22 MoonGeek 阅读(2159) 评论(2) 推荐(0) 编辑
摘要: synchronized 是内置锁,而Lock 接口定义的是显示锁,Lock 提供了一种可重入的、可轮询的、定时的以及可中断的锁获取操作。 ReenTranLock实现了Lock接口,并提供了与synchronized 相同的互斥性和内存可见性。在获取ReentranLock时,有着与进入同步代码块 阅读全文
posted @ 2017-11-18 20:13 MoonGeek 阅读(3052) 评论(3) 推荐(1) 编辑
摘要: 0、使用线程池的必要性 在生产环境中,如果为每个任务分配一个线程,会造成许多问题: 线程生命周期的开销非常高。线程的创建和销毁都要付出代价。比如,线程的创建需要时间,延迟处理请求。如果请求的到达率非常高并且请求的处理过程都是轻量级的,那么为每个请求创建线程会消耗大量计算机资源。 资源消耗。 活跃的线 阅读全文
posted @ 2017-11-14 15:38 MoonGeek 阅读(1062) 评论(0) 推荐(0) 编辑
摘要: 1、一级缓存 ​ MyBatis 默认开启了一级缓存 ,一级缓存是在SqlSession 层面进行缓存的。即,同一个SqlSession ,多次调用同一个Mapper和同一个方法的同一个参数,只会进行一次数据库查询,然后把数据缓存到缓冲中,以后直接先从缓存中取出数据,不会直接去查数据库。 ​ 但是不 阅读全文
posted @ 2017-10-18 23:01 MoonGeek 阅读(37000) 评论(0) 推荐(6) 编辑
摘要: 1、处理自动装配的歧义性 1.1 标记首选的bean ​ 使用@Primary 来说明一个bean是首选的。 ~~~java @Component @Primary public class GuoRongCD implements CompactDisc {} ~~~ 或是 ~~~java @Be 阅读全文
posted @ 2017-10-11 16:52 MoonGeek 阅读(631) 评论(0) 推荐(0) 编辑
摘要: 1、依赖注入(DI) 的重要性 ​ 如果直接在代码里面实例化一个对象,会使代码的耦合度大,使代码难以测试,难以复用,难以理解。通过DI,对象的依赖关系将由系统中负责协调各对象的第三方组件在创建对象的时候进行设定。 ​ 在DI中,面接口编程,而不是面向实例对象编程。所以,只要是实现了该接口的对象,都可 阅读全文
posted @ 2017-10-11 16:40 MoonGeek 阅读(742) 评论(0) 推荐(0) 编辑
摘要: 1、wait()、notify/notifyAll() 方法是Object的本地final方法,无法被重写。 2、wait()使当前线程阻塞,前提是 必须先获得锁,一般配合synchronized 关键字使用,即,一般在synchronized 同步代码块里使用 wait()、notify/noti 阅读全文
posted @ 2017-10-06 13:33 MoonGeek 阅读(179784) 评论(16) 推荐(29) 编辑
摘要: 1、Comparable 介绍 Comparable 是一个排序接口,如果一个类实现了该接口,说明该类本身是可以进行排序的。注意,除了基本数据类型(八大基本数据类型) 的数组或是List,其余类型的对象,Collections.sort或Arrays.sort 是不支持直接进行排序的,因为对象本身是 阅读全文
posted @ 2017-10-02 12:33 MoonGeek 阅读(730) 评论(0) 推荐(0) 编辑