Java编程细节
Java编程细节
常用类和方法
时间推荐使用LocalDateTime
LocalDateTime去掉T 添加 LocalDateTimeSerializerConfig
字符串处理
JAVA字符串格式化-String.format()的使用 非常全面
数据结构
枚举
集合
java对象排序(Collections.sort Comparator)
我们在一般的使用过
Map
Java 静态(static) Map字典初始化方法及示例代码
队列
java中ConcurrentLinkedQueue类 一个基于链接节点的无界线程安全队列。此队列按照 FIFO(先进先出)原则对元素进行排序。
List
Java中 CopyOnWriteArrayList 的使用
CopyOnWriteArrayList类最大的特点就是,在对其实例进行修改操作(add/remove等)会新建一个数据并修改,修改完毕之后,再将原来的引用指向新的数组。这样,修改过程没有修改原来的数组。也就没有了ConcurrentModificationException错误
线程、并发和回调
线程
java开启新线程的三种方法 继承Thread类、实现Runnable接口、直接在函数体使用(匿名内部类,其实也是属于实现Runnable接口方式的特例。)
Java中终止(销毁)线程的方法 设置退出标志、使用interrupt()方法中断线程、使用stop方法强行终止线程(不推荐使用)
父子线程
Java 浅析 Thread.join() Parent父线程会等待child子线程运行完再继续运行。
Java后台线程 java线程可以分为用户线程(也称前台线程或普通线程)和后台线程(Daemon thread)。
Java四种线程池 介绍了new Thread的弊端和四种线程池。
Java通过Executors提供四种线程池,分别为:
newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。
newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。
newScheduledThreadPool 创建一个周期线程池,支持定时及周期性任务执行。
newSingleThreadExecutor 创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证所有任务按照指定顺序(FIFO, LIFO, 优先级)执行。
多线程
【线程锁】ExecutorService的submit方法使用
ExecutorService的submit和execute区别
并发与现场同步
Java并发与线程同步 内容很全面,介绍了进程、线程、协程,线程安全和线程安全的实现方法(synchronized、Lock、信号量)等,应用场景。
JAVA多线程-Semaphore信号量 研究通讯程序,回调等
Semaphore(信号量) 是一个线程同步结构,用于在线程间传递信号,以避免出现信号丢失,或者像锁一样用于保护一个关键区域,可以控制同时访问的线程个数,并且通过acquire()
方法获取一个许可,如果没有则等待,而release()
方法会释放一个许可。
java计时器 Timer类与TimerTask类
Java如何实现任务超时处理 通讯程序中的超时
回调
Java实现异步回调 内容全面,介绍了CallBack 接口回调范例,JDK8中新增的CompletableFuture。
Java线程之异步回调(Callback)
介绍了线程中的回调和Future。Futures是一个抽象的概念,它表示一个值,该值可能在某一点变得可用。一个Future要么获得 计算完的结果,要么获得计算失败后的异常。Java在java.util.concurrent包中附带了Future接口,它使用Executor异步执行。
java模拟C# Action作为方法参数传递
Java等效的.NET的ManualResetEvent和WaitHandle
其他
使用System.Diagnostics.Stopwatch对程序的运行时间精确地测量
AtomicReference 原子操作
AtomicReference的compareAndSet更新问题