通常意义上来讲,最有效率的方法应该是建立一个数据库连接池。当需要connection时从连接池中获取,使用完毕时丢回去。
连接池负责对数据库连接的建立(登录、初始设定如字符集等等)和销毁。
如果您担心这样做带来的代码复杂度,那么建议您每个线程使用一个单独的连接。
多个线程在访问同一个数据库中的记录的时候,在大并发的情况下,一定要做好事务机制。要不然后果还是很扎心的。可能遇到这样的问题的时候首先想到的就是同步锁机制了。
并发产生的情况以我的平时工作的经验来说,凡是涉及多线程的并发访问的问题一定要小心。因为一不小心就会产生死锁问题。平时编程的时候更要多注意这方面的问题。我们可以产生问题的情况是复杂的,两个线程争同一个对象会有问题,如果你只静态的方法,简单的逻辑不是问题,但是如果你的线程是修改静态变量的值,那应该是线程问题造成的。
java多线程并发最经典的多并发的情况就是生产者和消费者的问题了吧。之前在学校学习 *** 作系统的时候,经常因为类似的并发 *** 作的问题想很久。后来工作的时候真正的实践以后,更能很好的体会到并发线程 *** 作的难度。java是线程安全的,即对任何方法(包括静态方法)都可以不考虑线程冲突,但有一个前提,就是不能存在全局变量。如果存在全局变量,则需要使用同步机制。
并发连接数据库其实在实际项目开发汇总,首先要做的就是避免多个线程共用一个数据库连接,这样会很容易出问题,最好是一个线程一个连接。在必要的时候需要线程同步或存储过程加锁。如果有比较复杂的事务 *** 作的话就需要加锁了,如果不加的话就会出现你说的脏读、死锁等问题。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)