【发布时间】:2014-02-22 12:27:46
【问题描述】:
public class Parser {
ExecutorService pool = Executors.newFixedThreadPool(10);
public void update() {
Item item = new Item(subj.getName(), dateBuilder.toString(),
cobBuilder.toString(), interest, count);
pool.submit(new ItemDispatcher(item));
}
}
public class ItemDispatcher implements Runnable {
private Item item;
public ItemDispatcher(Item someItem) {
this.item = someItem;
}
@Override
public void run() {
try {
new Database(item).writeToDb();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public class Database {
private String name;
private String date;
private String cob;
private String interest;
private String count;
private String _url;
private String _userId;
private String _password;
private String _dbLib;
private String _dbFile;
private Connection _conn;
private PreparedStatement _statement;
public Database(Item item) {
name = item.get_item();
date = item.get_date();
cob = item.get_cob();
interest = item.get_interest();
count = item.get_count();
}
public void writeToDb() {
try {
//statment.setString();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
如何创建一个线程安全的数据库连接,而不是为每个执行任务的线程初始化一个新连接。我问过类似的问题here,但该解决方案使用了我不想使用的第三方库。有人可以告诉我一个简单的选择吗?
【问题讨论】:
-
建立将提供连接的类连接并使其成为单例
-
我不确定如何使用单例在多线程应用程序中创建连接池:(
-
run()方法是否应该接收实例并执行db插入?
标签: java multithreading jdbc thread-safety threadpool