java协程操作mysql数据库
我的项目:
nanshaws/nettyWeb: 复习一下netty,并打算做一个web项目出来 (github.com)
最近在项目中分别添加了虚拟线程操作mysql数据库,和用协程操作mysql数据库
同理先跟我这个博客操作一下前面的:就单纯代码的时候进行修改:
完整代码:
package org.tianfan.mysqlTest;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class Test002 {
static String name = "root";
static String password = "123456";
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/itheima?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
public static void main(String[] args) throws ExecutionException, InterruptedException {
CompletableFuture<Connection> coroutine1 = CompletableFuture.supplyAsync(() -> {
// 协程1的执行逻辑
Connection conn = null;
Statement stmt = null;
try {
// 注册 JDBC 驱动
Class.forName(JDBC_DRIVER);
// 打开链接
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL, name, password);
System.out.println("连接成功...");
}catch (Exception e){
e.printStackTrace();
}
return conn;
});
CompletableFuture<String> coroutine2 = CompletableFuture.supplyAsync(() -> {
// 协程2的执行逻辑
return "进行数据库操作";
});
/**
* 其他耗时操作
*/
Connection connection = coroutine1.get();
System.out.println(coroutine2.get()); // 输出:Coroutine 2 finished.
}
}
这样做的好处就是不会在执行协程1的时候,不会阻塞主线程,直到主线程使用coroutine1.get();的时候才会阻塞主线程
结果图:

java协程操作mysql数据库的更多相关文章
- Java使用Jdbc操作MySql数据库(一)
这个示例是Java操作MySql的基本方法. 在这个示例之前,要安装好MySql,并且配置好账户密码,创建一个logininfo数据库,在数据库中创建userinfo数据表.并且在表中添加示例数据. ...
- Java -- DBUtils 框架 操作MySQL数据库
1. 增删改查 常用Handler处理器示例 QueryRunner类提供了两个构造方法: •默认的构造方法 •需要一个 javax.sql.DataSource来作参数的构造方法. public ...
- Java通过JDBC 进行MySQL数据库操作
转自: http://blog.csdn.net/tobetheender/article/details/52772157 Java通过JDBC 进行MySQL数据库操作 原创 2016年10月10 ...
- JAVA程序对MYSQL数据库加锁实验
什么是脏读,不可重复读,幻读 1. 脏读 :脏读就是指当一个事务正在访问数据,并且对数据进行了修改,而这种修改还没有提交到数据库中,这时,另外一个事务也访问这个数据,然后使用了这个数据. 2. 不可重 ...
- Java 操作MySql数据库
Java 项目开发中数据库操作是很重要的一个方面,对于初学者来说,MySql是比较容易熟悉的一种常见数据库,这篇文章记录了如何用Java来操作MySql数据库. 第一章 JDBC的概念 JDBC(Ja ...
- java数据库 JDBC操作MySQL数据库常用API 部门表和员工表 创建表 添加数据 查询数据
package com.swift.department; import java.sql.Connection; import java.sql.PreparedStatement; import ...
- Java协程实践指南(一)
一. 协程产生的背景 说起协程,大多数人的第一印象可能就是GoLang,这也是Go语言非常吸引人的地方之一,它内建的并发支持.Go语言并发体系的理论是C.A.R Hoare在1978年提出的CSP(C ...
- 转 用C API 操作MySQL数据库
用C API 操作MySQL数据库 参考MYSQL的帮助文档整理 这里归纳了C API可使用的函数,并在下一节详细介绍了它们.请参见25.2.3节,“C API函数描述”. 函数 描述 mysql_a ...
- [转]向facebook学习,通过协程实现mysql查询的异步化
FROM : 通过协程实现mysql查询的异步化 前言 最近学习了赵海平的演讲,了解到facebook的mysql查询可以进行异步化,从而提高性能.由于facebook实现的比较早,他们不得不对php ...
- JDBC操作MySQL数据库案例
JDBC操作MySQL数据库案例 import java.sql.Connection; import java.sql.DriverManager; import java.sql.Prepared ...
随机推荐
- 记一次Android项目升级Kotlin版本(1.5 -> 1.7)
原文地址: 记一次Android项目升级Kotlin版本(1.5 -> 1.7) - Stars-One的杂货小窝 由于自己的历史项目Kotlin版本比较老了,之前已经升级过一次了(1.4-&g ...
- Java日志系列:日志门面JCL、SLF4J
目录 一.日志门面说明 二.JCL 使用 JCL 入门 JCL 原理 三.SLF4J 使用 配合自身简单日志实现(slf4j-simple) 配置logback日志实现 配置Log4J日志实现(需适配 ...
- 4.2 C++ Boost 内存池管理库
Boost 库是一个由C/C++语言的开发者创建并更新维护的开源类库,其提供了许多功能强大的程序库和工具,用于开发高质量.可移植.高效的C应用程序.Boost库可以作为标准C库的后备,通常被称为准标准 ...
- 2023-08-22:请用go语言编写。给定一个长度为N的正数数组,还有一个正数K, 返回有多少子序列的最大公约数为K。 结果可能很大,对1000000007取模。 1 <= N <= 10^5, 1
2023-08-22:请用go语言编写.给定一个长度为N的正数数组,还有一个正数K, 返回有多少子序列的最大公约数为K. 结果可能很大,对1000000007取模. 1 <= N <= 1 ...
- ELK环境部署-基础环境安装(一)
ELK简介 ElasticSearch工作原理以及专用名词 ELK是Elasticsearch(ES) , Logstash, Kibana的结合,是一个开源日志收集软件. Elasticsearch ...
- Django项目缓存优化
一.为什么要使用缓存 大家可以想一下Django的请求响应流程: → 用户浏览器输入URL地址 → Web服务器将HTTP请求转发给uWSGI服务器 → uWSGI服务器将Request请求转发给Dj ...
- 基于 ActionFilters 的限流库DotNetRateLimiter使用
前言 在构建API项目时,有时出于安全考虑,防止访问用户恶意攻击,希望限制此用户ip地址的请求次数,减轻拒绝服务攻击可能性,也称作限流.接下来,我们就来学习开源库DotNetRateLimiter 如 ...
- .NET 8 的 green thread 异步模型被搁置了
.NET 平台上的green thread 异步模型实验结果最近出来了,具体参见:https://github.com/dotnet/runtimelab/issues/2398 ,实验结果总结一下就 ...
- Openssl Des3对压缩文件进行加密命令详解
群友提问: 致力于明天: tar -cvf - WMG_Back_"$Today"|openssl des3 -salt -k hY91gd3GJAAfghECleLwWQAPGK ...
- 文心一言 VS 讯飞星火 VS chatgpt (108)-- 算法导论10.1 6题
六.用go语言,说明如何用两个栈实现一个队列,并分析相关队列操作的运行时间. 文心一言: 使用两个栈实现队列的基本思想是利用一个栈(stack1)来处理入队操作,另一个栈(stack2)来处理出队操作 ...