随笔分类 - Java
摘要:package com.example.test.async; import java.util.concurrent.CountDownLatch; public class CountDownLatchTest { private static final int COUNT = 5; priv
阅读全文
摘要:package com.example.test.async; import lombok.Getter; import java.util.concurrent.Exchanger; /** * 小红和小明是好朋友 * 小红想知道小明的小秘密 * 小明也想知道小红的小秘密 * 于是他们打算互相交换
阅读全文
摘要:package com.example.test.async; import java.util.Random; import java.util.concurrent.Semaphore; /* *一个小桑拿房一次最多只能容纳5个人 */ public class SemaphoreTest {
阅读全文
摘要:CyclicBarrier:一种同步辅助工具,允许一组线程相互等待以达到共同的障碍点。 package com.example.test.async; import java.util.ArrayList; import java.util.Comparator; import java.util.
阅读全文
摘要:ConcurrentHashMap概述 支持检索的完全并发和可调整的预期更新并发的哈希表。 此类遵循与 Hashtable 相同的功能规范,并包含与 Hashtable 的每个方法对应的方法版本。 但是,即使所有操作都是线程安全的,检索操作也不需要锁定,并且不支持以阻止所有访问的方式锁定整个表。 在
阅读全文
摘要:HashMap概述 Map 接口的基于哈希表的实现。此实现提供所有可选的映射操作,并允许空值和空键。(HashMap 类大致相当于 Hashtable,除了它是不同步的并且允许空值。)这个类不保证映射的顺序;特别是,它不保证顺序会随着时间的推移保持不变。 此实现为基本操作(get 和 put)提供恒
阅读全文
摘要:测试类 import com.example.test.algorithms.util.SortUtil; import org.apache.commons.lang3.ArrayUtils; import java.util.Random; public class TestSort { pri
阅读全文
摘要:标准bean生命周期 Bean工厂实现应该尽可能支持标准Bean生命周期接口。整套初始化方法及其标准顺序如下: BeanNameAware.setBeanName, BeanClassLoaderAware.setBeanClassLoader, BeanFactoryAware.setBeanFa
阅读全文
摘要:源文来自这里:https://www.cnblogs.com/shoshana-kong/p/10798489.html 原理就不多说了,网上有很多介绍的。这里直接上代码。 SkipListNode public class SkipListNode<T> { public int key; pub
阅读全文
摘要:源地址:https://blog.csdn.net/zhangzeyuaaa/article/details/50520458 名词解释 在弄清楚什么是BIO、NIO和AIO之前,需要先搞清楚什么是同步、异步、阻塞、非阻塞 同步和异步: 是针对应用程序和内核的交互而言的。 阻塞和非阻塞: 是针对进程
阅读全文
摘要:代码 public static void main(String[] args) { long begin = System.currentTimeMillis(); // 这里涉及到并发修改,不要使用ArrayList List<Double> list = new CopyOnWriteArr
阅读全文
摘要:Service测试用例 需要的依赖 <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <depe
阅读全文
摘要:对于SPI的介绍,这里就不再多说了,很多框架都有用到。 这里只写一些简单的实现。 工程结构如图: 源码 首先定义一个接口 import java.util.List; public interface Search { List<String> search(String keyword); } 写
阅读全文