ForkJoin任务分治详解

Java 7开始引入了一种新的Fork/Join线程池,它可以执行一种特殊的任务:把一个大任务拆成多个小任务并行执行。 我们举个例子:如果要计算一个超大数组的和,最简单的做法是用一个循环在一个线程内完成: ┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ └─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴
ForkJoin任务分治详解

ThreadLocal实现在线程内传递状态

多线程是Java实现多任务的基础,Thread对象代表一个线程,我们可以在代码中调用Thread.currentThread()获取当前线程。例如,打印日志时,可以同时打印出当前线程的名字: // Thread public class Main { public static void main(String args) throws Exception { log("start main.
ThreadLocal实现在线程内传递状态

虚拟线程详解

虚拟线程(Virtual Thread)是Java 19引入的一种轻量级线程,它在很多其他语言中被称为协程、纤程、绿色线程、用户态线程等。 在理解虚拟线程前,我们先回顾一下线程的特点: 线程是由操作系统创建并调度的资源; 线程切换会耗费大量CPU时间; 一个系统能同时调度的线程数量是有限的,通常在几百至几千级别。 因此,我们说线程是一种重量级资源。在服务器端,对用户请求,通常都实现为一个线程处理一
虚拟线程详解

JDBC简介

Java语言不仅仅是可以用来做一些加、减、乘、除的基本运算,也不仅仅是用IO对文件做一些读写操作,它还有一个非常重要的功能,那就是用来访问数据库(Database)。那么它是用什么来访问数据库的呢,答案是:JDBC。 JDBC 什么是JDBC?JDBC是Java DataBase Connectivity的缩写,它是Java程序访问数据库的标准接口,意思就是JDBC是Java语言本身就有的,不是第
JDBC简介

Java使用JDBC对数据进行CRUD操作-查询

前面我们讲了Java程序要通过JDBC接口来查询数据库。JDBC是一套接口规范,它在哪呢?就在Java的标准库java.sql里放着,不过这里面大部分都是接口。接口并不能直接实例化,而是必须实例化对应的实现类,然后通过接口引用这个实例。那么问题来了:JDBC接口的实现类在哪? 因为JDBC接口并不知道我们要使用哪个数据库,所以,用哪个数据库,我们就去使用哪个数据库的“实现类”,我们把某个数据库实现
Java使用JDBC对数据进行CRUD操作-查询

Java使用JDBC对数据进行CRUD操作-更新

数据库操作总结起来就四个字:增删改查,行话叫CRUD:Create,Retrieve,Update和Delete。 查就是查询,我们已经讲过了,就是使用PreparedStatement进行各种SELECT,然后处理结果集。现在我们来看看如何使用JDBC进行增删改。 插入操作是INSERT,即插入一条新记录。通过JDBC进行插入,本质上也是用PreparedStatement执行一条SQL语句,不
Java使用JDBC对数据进行CRUD操作-更新

JDBC连接池

我们在讲多线程的时候说过,创建线程是一个昂贵的操作,如果有大量的小任务需要执行,并且频繁地创建和销毁线程,实际上会消耗大量的系统资源,往往创建和消耗线程所耗费的时间比执行任务的时间还长,所以,为了提高效率,可以用线程池。 类似的,在执行JDBC的增删改查的操作时,如果每一次操作都来一次打开连接,操作,关闭连接,那么创建和销毁JDBC连接的开销就太大了。为了避免频繁地创建和销毁JDBC连接,我们可以
JDBC连接池