240 发简信
IP属地:北京
  • ReentrantLock (独占锁、互斥锁)

    ReentrantLock 互斥锁(独占锁) 锁 我们知道锁的基本原理是,基于将多线程并行任务通过某一种机制实现线程的串 行执行,从而达到线程安全性的目的。而Lock是juc...

  • 调用链例子

    优雅的管理类的调用链路,符合开闭原则 添加与修改逻辑只需要修改调用链路即可。可以把类的执行顺序用链表或者list存储起来,存储的顺序就是类执行的顺序。 handler han...

  • 创建/破坏-单例模式的几种方式

    定义 单例模式(Singleton Pattern) 是指确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。 特点 构造方法私有提供一个全局的静态访问点 饿汉式...

  • HashSet

    特点 HastSet中保留了一个HashMap,本质就是HashMap,只不过hashMap的value是同一个值,通过hashMap添加数据的时候key一致会替换特性来保证...

  • 集合类随笔

    Vector 跟ArryList一样,只不过他的所有方法都被 syn关键子包裹了,使得它是线程安全的但是严重影响性能已经被弃用了 使集合变成只读 抛出异常 如果集合类遇到线程...

  • FailFast机制

    表象 开启2个线程操作同一个Arrylist,一个线程A添加数据同时另一个线程B获取数据。 结果 结论 fail-fast 机制是java集合(Collection)中的一种...

  • HashMap源码分析

    HashMap源码分析 总结 hashMap中用数组存储数据。初始值是16。每次扩容2倍。当数据>12(0.75 * 数组的长度)的时候会发起扩容。数组中存储的是Enty。默...

  • 注解

    作用** jdk1.5以后出现的 编译检查@Override 注解 -在编译阶段检查方法是否继承自父类 编写文档javadoc 生成文档 代码分析 -jdk预定于的注解@ov...

  • 反射

    定义 动态获取类的内容与动态调用对象的属性和方法和属性的机制,叫做反射。在java运行状态中 对于一个给定的类(class)对象,可以获取这个类的所有属性和方法。 对于一个给...

  • 泛型

    本质 参数化类型, 指定类型防止出现参数转化异常 泛型的擦除 只在编译阶段有效,编译之后jvm会采取去泛型化的措施。可以通过反射跳过泛型的检查。 通配符 无边界 上边界 下边...

  • ArryList源码

    ArryList适合查询多 不适合大量新增与删除的操作 属性 初始化 ArryList就是操作数组 add(Object o) 数组的下标是连续的,每次按照elementDa...

  • Future&Callable

    使用场景 当需要获取另一个线程的的执行结果的时候,可以用Future + callable结合来使用。 获取线程执行结果使用案例 Future&Callable源码流程图 C...

  • CountDownLatch源码

    作用 一种同步工具,允许一个或多个线程等待直到其他线程中的任务执行完成。CountdownLatch的构造方法传入int类型的count数据。由于调用了countDown的方...

  • Object.wait() Object.notify

    前提 - wait()为什么在Object中 Java中每一个对象都可以成为一个监视器(Monitor), 该Monitor由一个锁(lock), 一个等待队列(waitin...

  • 线程池

    线程池 提前创建好若干个线程,如果有任务需要处理,则直接分配任务给线程池中的线程,使用完线程不会销毁而是放回到线程池中。 线程的复用避免重复创建线程与销毁线程。 提高相应速度...

  • 120
    ThreadPool 执行任务抛出异常如何处理

    ThreadPool 执行任务抛出异常 执行任务的方式 线程池执行任务有2中方式 ThreadPool.execute(Runable task); 直接抛出异常。删除异常...

  • ThreadPool-参数设置选择

    **最大线程数目 ** ( 任务执行总时间 / 线程CPU时间 )* CPU数目 如何理解这句话呢?说一下我的理解吧。 (1.5+0.5)/0.5*4 = 32 假设每个任务...

  • mybatis-spring

    为什么要整和spring 虽然mybatis已经很好用了,但是每次都需要创建sqlSession自己管理sqlsession的生命周期,硬编码获取mapper,自己管理事物的...

  • mybatis 二级缓存源码阅读

    mybatis 二级缓存源码阅读 二级缓存 二级缓存之所以能够跨session是因为采用的装饰器模式对Executor进行了装饰. // 配置文件中开启总开关 Mapper文...

  • mybatis pagehelper

    mybatis pagehelper使用 使用 配置文件中添加插件元素 在你需要进行分页的 MyBatis 查询方法前调用 PageHelper.startPage 静态方法...