Я строю тестирование приложений на Java в качестве эксперимента. Цель этого инструмента - выяснить, насколько быстро работает конкретная база данных (например, Derby, MySQL).
В данный момент я пытаюсь выяснить, насколько быстро работает база данных при одновременном выполнении нескольких запросов.
Я думал о создании нескольких потоков, где каждый поток выполняет несколько запросов. Но в данный момент запросы, похоже, выполняются после завершения другого запроса, а не одновременно.
У меня есть следующий (упрощенный) код:
Runner testCase = new Runner();
for (int i = 0; i < THREAD_COUNT; i++) {
Thread testThread = new Thread(testCase);
testThread.start();
}
public class Runner implements Runnable {
public void run() {
for (int i = 0; i < Benchmarker.QUERY_COUNT; i++) {
stopwatch2.start();
List<Person> selectData = dataHandler.selectData();
stopwatch2.stop();
counter += stopwatch2.getStopwatchValue();
}
}
}
У процессора моей тестовой системы есть два ядра, поэтому должна быть возможность запуска двух потоков одновременно, верно?
Кто-нибудь знает, как реализовать эту опцию?
Спасибо за ваше время и помощь!
ОБНОВЛЕНИЕ - добавлен код метода selectData :
public List<Person> selectData() {
List<Person> data = new ArrayList<Person>();
try {
// Select all persons from the database
ResultSet resultSet = connection.prepareStatement("SELECT * FROM PERSON ORDER BY name").executeQuery();
// Add all the persons to a arraylist
while (resultSet.next()) {
data.add(new Person(resultSet.getString("name")));
}
// Close the resultset
resultSet.close();
} catch (SQLException ex) {
Logger.getLogger(Derby.class.getName()).log(Level.SEVERE, null, ex);
}
return data;
}