我還是一名剛從事兼職工作的本科生,所以我一直在努力去注意更好的方式來做事情。最近,我不得不寫一個工作程序,程序的主線程會產生「任務」線程(對於每個數據庫「任務」記錄),這些線程將執行一些操作,然後更新記錄以表明它已完成。因此,我需要一個數據庫連接對象和ThreadedTask對象中可用的PreparedStatement對象。Java中的Thread中PreparedStatements的這種用法是否正確?
這大概是我最後寫的,是爲每個線程創建一個PreparedStatement
對象嗎?我想靜PreparedStatments
可以創造競爭條件...
Thread A stmt.setInt(); Thread B stmt.setInt(); Thread A stmt.execute(); Thread B stmt.execute();
A's版本永遠不會被execed ..
這是線程安全的?正在創造和銷燬永遠不變的巨大垃圾?
public class ThreadedTask implements runnable {
private final PreparedStatement taskCompleteStmt;
public ThreadedTask() {
//...
taskCompleteStmt = Main.db.prepareStatement(...);
}
public run() {
//...
taskCompleteStmt.executeUpdate();
}
}
public class Main {
public static final db = DriverManager.getConnection(...);
}
不要存儲連接,在需要時獲取連接。 如果您需要bettr性能,請使用連接池。 AS Thilo如下所述,不會在線程之間分享內容。 – 2010-04-26 12:41:41