Java

Dependencies

  • JDBC library (package libmysql-java on Debian-based distributions)

Code

import java.sql.*;
import java.util.Properties;
import java.util.concurrent.*;
public class Sample {
private static final String dbClassName = "com.mysql.jdbc.Driver";
private static final String CONNECTION = "jdbc:mysql://127.0.0.1:3306/";
private static final String USER = "root";
private static final String PASSWORD = "";
private static void executeSQL(Connection conn, String sql) throws SQLException {
try (Statement stmt = conn.createStatement()) {
stmt.execute(sql);
}
}
private static void ResetEnvironment() throws SQLException {
Properties p = new Properties();
p.put("user", USER);
p.put("password", PASSWORD);
try (Connection conn = DriverManager.getConnection(CONNECTION, p)) {
for (String query: new String[] {
"DROP DATABASE IF EXISTS test",
"CREATE DATABASE test",
"USE test",
"CREATE TABLE tbl (id INT AUTO_INCREMENT PRIMARY KEY)"
}) {
executeSQL(conn, query);
}
}
}
private static void worker() {
Properties properties = new Properties();
properties.put("user", USER);
properties.put("password", PASSWORD);
try (Connection conn = DriverManager.getConnection(CONNECTION, properties)) {
executeSQL(conn, "USE test");
while (!Thread.interrupted()) {
executeSQL(conn, "INSERT INTO tbl VALUES (NULL)");
}
} catch (SQLException e) {
e.printStackTrace();
}
}
public static void main(String[] args) throws ClassNotFoundException, SQLException, InterruptedException {
Class.forName(dbClassName);
ResetEnvironment();
ExecutorService executor = Executors.newFixedThreadPool(20);
for (int i = 0; i < 20; i++) {
executor.submit(new Runnable() {
@Override
public void run() {
worker();
}
});
}
Thread.sleep(20000);
executor.shutdownNow();
if (!executor.awaitTermination(5, TimeUnit.SECONDS)) {
System.err.println("Pool did not terminate");
}
}
}

Last modified: July 26, 2023

Was this article helpful?