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"); } } }