java - MySQL 和 Java 中的多线程编程

标签 java mysql multithreading

我有一个 Java 程序,它使用线程池来使用多线程。每个线程都会执行一些 select 和 insert 语句。数据库是MySQL InnoDB。

我计划启动多个运行屏幕(6 个进程),每个进程都将采用多线程。我的问题是:

1) 我可以为池定义多少个线程?由于我的处理器是 Core i7-2640M,我是否限制最多 4 个线程?

2) 我应该担心有关数据库完整性的任何事情吗?我没有对程序中的任何内容使用同步(没有必要),但我担心数据库插入语句。我是否需要同步它们,或者 MySQL 会关心这一点,因为我知道主函数中的每个进程都有一个连接。

请给我建议。

最佳答案

从 2) 开始 只要您注意隔离级别,数据库完整性就得到保证:如果您的插入不是原子的,或者您的选择关心来自其他线程的插入时间,请使用事务。

关于1) 最佳线程数在很大程度上取决于这些线程的功能:WAITING远程数据库事务明确完成的线程不需要可用的核心。我建议您从 4 倍核心数开始,然后从那里开始测试。根据您的操作系统,您还需要对进程与线程进行基准测试。

关于java - MySQL 和 Java 中的多线程编程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13514217/

相关文章:

java - DataOutputStream.writeBytes 添加零字节

java - 在 HashMap 上应用锁

java - RejectedExecutionException 后调用线程不会停止

c++ - OpenMP 一次只执行一个线程

java - 在url中隐藏java包结构

java - Android - 如何修复 java.lang.IndexOutOfBoundsException 错误 : Index: 0, 大小:0

python - 使用 MySQLdb 在 Python 中执行这样的 SQL 查询是否安全?

sql - 帮助形成 SQL 查询

php - 检查隐私并根据单个查询获取用户

c# - 并行的 AddOrUpdate 的 ConcurrentDictionary 和 ConcurrentBag