Java 带执行器或多线程环境的Apache DBCP
我的services.xml中有以下代码Java 带执行器或多线程环境的Apache DBCP,java,multithreading,spring,executorservice,apache-commons-dbcp,Java,Multithreading,Spring,Executorservice,Apache Commons Dbcp,我的services.xml中有以下代码 <bean id="executorService" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool"> <constructor-arg value="10" /> </bean> <task:annotation-driven executor="executor" /> <task:ex
<bean id="executorService" class="java.util.concurrent.Executors" factory-method="newFixedThreadPool">
<constructor-arg value="10" />
</bean>
<task:annotation-driven executor="executor" />
<task:executor id="executor" pool-size="10" queue-capacity="100" rejection-policy="CALLER_RUNS" />
在同一个项目中,我还使用dbcp.BasicDataSource连接到数据库
我已经读到,当你的应用程序是单线程而不是多线程时,DBCP最有效。executor的使用告诉我这个应用程序是多线程的。您认为这里使用DBCP不合适吗?这是一个好的做法吗?或者,我是否一直认为DBCP不能处理多线程环境
如能提供正确方向的指导,将不胜感激
我已经读到,当你的应用程序是单线程而不是多线程时,DBCP最有效
你能提供这些信息的来源吗?DBCP的唯一问题是它使用单个锁来同步池上的所有操作,这可能成为重多线程应用程序的瓶颈
DBCP无法处理多线程环境
想想看。如果您的应用程序只是单线程的,它将永远不会使用多个连接。JDBC是阻塞的,因此不能同时使用来自同一线程的两个连接来简化。也就是说,若只从一个线程查询数据库,不仅不需要连接池,也不需要数据源。一个连接就足够了
所以。。。我们主要在多线程应用程序中使用连接池,特别是在线程数量远大于可用连接数量且线程之间相互竞争的情况下。每个sane连接池都能够在多线程环境中工作
我已经读到,当你的应用程序是单线程而不是多线程时,DBCP最有效
你能提供这些信息的来源吗?DBCP的唯一问题是它使用单个锁来同步池上的所有操作,这可能成为重多线程应用程序的瓶颈
DBCP无法处理多线程环境
想想看。如果您的应用程序只是单线程的,它将永远不会使用多个连接。JDBC是阻塞的,因此不能同时使用来自同一线程的两个连接来简化。也就是说,若只从一个线程查询数据库,不仅不需要连接池,也不需要数据源。一个连接就足够了
所以。。。我们主要在多线程应用程序中使用连接池,特别是在线程数量远大于可用连接数量且线程之间相互竞争的情况下。每个sane连接池都能够在多线程环境中工作。您好,我自己也在探索这一点。我找不到任何在Java上使用连接池和多线程的好教程。我计划为每个线程创建一个连接。java应用程序,但我还没有开始。您好,我自己也在探索。我找不到任何在Java上使用连接池和多线程的好教程。我计划为thread.java应用程序创建一个连接,但我还没有开始。