import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class vacuum {
public static void connect(String str) {
Connection conn = null;
Statement stmt = null;
try {
String url = "jdbc:sqlite:/data/" + str;
conn = DriverManager.getConnection(url);
stmt = conn.createStatement();
stmt.executeUpdate("VACUUM");
System.out.println(str + "ok.");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
public static void main(String[] args) {
String str = "db1.lgd";
connect(str);
}
}
Есть несколько Sqlite баз, которым нужно делать вакум. Хочу делать вакум всем база в нескольких паралелльных потоках. Т.е. в метод connect передавать список баз из массива и сам метод запускать в отдельном потоке. Выше, рабочий код, который делать вакум для одной базы. Подскажите, это реализовать?
Нужно создать объект Thread, передать в него Runnable и запустить методом start, на Java 8 будет выглядеть так
public static void main(String[] args) {
new Thread(()->connect("db1.lgd")).start();
new Thread(()->connect("db2.lgd")).start();
}
Спасибо. Сделал так:
public class vacuum extends Thread {
public static void connect(String str) {
Connection conn = null;
Statement stmt = null;
try {
String url = "jdbc:sqlite:/data/" + str;
conn = DriverManager.getConnection(url);
stmt = conn.createStatement();
stmt.executeUpdate("VACUUM");
System.out.println(str + " ok.");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
public static void main(String[] args) {
new Thread(()->connect("db1.lgd")).start();
new Thread(()->connect("db2.lgd")).start();
}
}
Так время вакумизации занимает такое же время, если бы делать вакум каждой базы последовательно. Т.е. db1.lgd - 7 мин., db2.lgd - 2 минуты. Если в многопоточном режиме то теже 9 минут получаются.
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники