我有一个需求,我必须访问数据库并将这些值放在一个列表中,然后使用多个threads.currently打印这些值。我使用两个线程,我的输出是这样的:每个线程建立单独的数据库连接,并迭代整个列表,因此在output中,我得到了解决这个问题的每个值twice.pl帮助
发布于 2010-12-29 14:20:43
为什么不使用连接池呢?http://sourceforge.net/projects/c3p0/
发布于 2010-12-29 14:21:18
古老的分而治之的技术。从逻辑上将数据库分成两半(假设您从DB读取100个值,然后让每个线程读取50个值)。将数据合并回一个列表,然后打印出该列表。
发布于 2010-12-29 14:44:37
//这是我的代码
class Conn
{ Connection getDBConnection(String serverName,String url,String userid,String password) {
Connection conObj = null;
try {Class.forName("oracle.jdbc.OracleDriver");
conObj = DriverManager.getConnectionurl,userId,password);
return conObj;}
catch(Exception e){
}}}
class listObj extends Conn
{ List lst;
Connection con;
String query;
public List resultList() {
try{//connection code
query = "select * from test";
ResultSet rs = st.executeQuery(query);
lst=new ArrayList();
while(rs.next())
{lst.add(rs.getInt(1);}return lst;
} catch(Exception e)
{ }
}}
class Thread1 extends listObj implements Runnable
{ public void run()
{List ls=null;
try {ls=(ArrayList)resultList();
} catch (Exception e) {
e.printStackTrace();
}
ListIterator it= ls.listIterator();
while (it.hasNext()){
System.out.println(it.next());
} }}
class TestMain extends listObj {
p.s.v.m(String a[]) throws Exception {
Thread t1=new Thread(new Thread1());
Thread t2=new Thread(new Thread1());
t1.start();t2.start();}}
https://stackoverflow.com/questions/4551876
复制相似问题