大家好,两年的Java开发经验,让我学到了很多东西,当然我没用过什么东西,除了在学习阶段,这个是java.util.concurrent.*包,对我来说还是一头雾水森林,工作原理可以理解,但是我还是不懂应用,nobody,queues,blocking等等。
现在已经明白了,这个问题本身不是一个问题,而在很大程度上是一个咨询。
我有一个使用 JBDC + Postgres 的项目。数据库访问是标准的。我收到连接 - 我填写参数 - 我完成请求 - 我处理 ResultSet - 我关闭连接。我总是只有一个手术,这已经足够了。但随后需要一次执行大约 100 个相同类型的请求。在此之前,我是用标准的方式来做的,把所有东西都放在一个List中,然后打开连接,按顺序执行请求,然后我已经在List中编写了响应模型并关闭了连接。
然后我有一个问题,这个时候是否值得,例如使用多线程,例如队列,或者例如将进程分成10个操作的10个线程,它是否工作得更快,并且会总体来说划算吗?值得努力学习和应用吗?在学习中,很明显它会派上用场,因为有很多职位需要多线程知识。
您在评论中正确指向了连接池,因为 使用 JDBC 驱动程序的所有操作都是阻塞的,在多线程环境中使用它们是正确的,只有创建一定数量的连接并使用它们。否则,创建连接的操作会“吃掉”宝贵的时间,多线程也无利可图。您还需要查看数据库本身的操作,这也可能是阻塞的(例如,插入一个表可以为其他人阻塞该表)。因此,您可能会偶然发现数据库中的锁,并且无法以任何方式处理它。一般来说,多线程是一个很酷的东西,但是非常反复无常,你需要小心使用它。