Я все еще старшекурсник, работаю неполный рабочий день, и поэтому я всегда стараюсь понять, как лучше делать что-то. Недавно мне пришлось написать программу для работы, в которой основной поток программы будет порождать потоки «задачи» (для каждой записи базы данных «задача»), которая будет выполнять некоторые операции, а затем обновлять запись, чтобы сказать, что она завершена. Поэтому мне потребовался объект подключения к базе данных и объекты PreparedStatement в или доступные для объектов ThreadedTask.
Это примерно то, что я в итоге написал, создание PreparedStatement
объекта на поток - пустая трата времени? Я думал, что статический PreparedStatments
может создать условия гонки ...
Thread A stmt.setInt();
Thread B stmt.setInt();
Thread A stmt.execute();
Thread B stmt.execute();
Версия A никогда не исполняется ..
Безопасен ли этот поток? Разве создание и уничтожение PreparedStatement
объектов, которые всегда одинаковы, не является огромной тратой?
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(...);
}