随笔分类 - Java
Java相关知识,包括工具类使用和源码等
摘要:1 基本使用 ThreadLocal的作用是保存线程本地变量,在多线程在CPU时间分片交替执行过程中,每个线程只能获取到它自己的数据。 ThreadLocal的使用非常简单: 创建ThreadLocal。 线程执行逻辑前期,保存本地变量。 线程执行逻辑后期,获取本地变量。 线程处理完成之前,手动清除
阅读全文
摘要:在学习之前,需要对线程的概念和多线程编程的常见问题有基本理解。 1 线程 Thread(重要) Runnable(重要) Callable和FutureTask(重要) CompletableFuture 2 线程池 ThreadPoolExecutor(重要) ScheduledThreadPoo
阅读全文
摘要:1 基本使用 ScheduledThreadPoolExecutor是一种特殊的线程池,它可以执行延迟任务和定时任务。 首先,通常会在全局范围内创建线程池对象,可以是静态变量,或者Spring单例对象: ThreadFactory threadFactory = Executors.defaultT
阅读全文
摘要:1 使用 线程池使用池化技术,通过重复使用线程,避免了重复创建线程的资源浪费。 首先,我们需要在全局创建ThreadPoolExecutor对象,可以通过静态变量,也可以通过Spring单例对象。 然后,在业务调用处,创建任务并提交到线程池。 最后,为了安全考虑,在应用程序关闭时往往需要通过钩子函数
阅读全文
摘要:1 使用 java.util.concurrent.Callable是有返回值的多线程任务: public interface Callable<V> { V call() throws Exception; } 通过实现Callable接口,在call()方法中定义业务逻辑,并返回处理结果。例如:
阅读全文
摘要:1 创建线程 1.1 两种创建方法 我们可以通过继承Thread类来创建一个线程: Thread thread = new Thread() { @Override public void run() { System.out.println("run()"); } }; thread.start(
阅读全文
摘要:1 Stream的使用 在深入学习Stream的本质之前,我们需要先熟悉Stream的使用规则。对Stream有了整体的认识之后,才能更好的理解它的本质。 1.1 使用步骤 使用Stream只需要遵循3个步骤: 创建流。 逻辑处理。 收集结果。 例如,我们需要考试分数大于60分的人数: // 考试分
阅读全文
摘要:Stream是Java8提供的一种更加简便的,对集合类型数据结构的处理API。 这里的集合类型数据结构包括各种数组(int[]/String[]等),也包括Collection和Map等实现类。 1 传统方式操作集合 在处理集合类型数据结构时,我们通常会遍历得到每个元素,对每个元素进行处理。操作维度
阅读全文
摘要:1 什么是方法/构造器引用 简单来说,方法引用是对lambda表达式的一种更加简便的写法。 所谓引用,就是对当前已存在的一段代码的借用。 方法引用则是隐式借用已经存在的方法作为现成的执行逻辑,而不必在lambda表达式中显示调用该方法,或者重写这一部分代码。 同理,构造器引用则是隐式借用某个类的构造
阅读全文
摘要:0 捕获自由变量 为了使lambda表达式看起来更像是函数式编程,可以在函数内部直接访问外部变量。lambda表达式具有一个特殊的能力,它可以捕获自由变量。 自由变量指的是lambda表达式外(之前)的变量,如: String str = "Hello, lambda!"; () -> { Syst
阅读全文
摘要:代码示例:java.lambda.LambdaExpression 1 本质 lambda表达式本质上是对匿名内部类实例的一种简化写法。 1.1 案例 有以下List<Integer>对象: List<Integer> list = Arrays.asList(1, 3, 5, 7, 9, 2, 4
阅读全文
摘要:1 基于接口的代理模式 什么是代理? 简单来说,代理是指一个对象代替另一个对象去做某些事情。 例如,对于每个程序员来说,他都有编程的能力: interface Programmable { void developSoftware(); } 对于Java程序员,他会编写Java代码: class J
阅读全文
摘要:0 前言 对于Java程序员而言,Web服务器(如Tomcat)是后端开发绕不过去的坎。简单来看,浏览器发送HTTP请求给服务器,服务器处理后发送HTTP响应给浏览器。 Web服务器负责对请求进行处理。HTTP请求和响应本质上可以看成是有一定格式的字符串,而在网络中传输的数据都需要转换成二进制格式。
阅读全文
