package singleton; /** * Thread-safe Singleton using double-checked locking. */ public class DatabaseConnection { private static volatile DatabaseConnection instance; private final String url; private int queryCount = 0; private DatabaseConnection() { this.url = "jdbc:mysql://localhost:3306/myapp"; System.out.println("Establishing connection to " + url); } public static DatabaseConnection getInstance() { if (instance == null) { synchronized (DatabaseConnection.class) { if (instance == null) { instance = new DatabaseConnection(); } } } return instance; } public String executeQuery(String sql) { queryCount++; return "Result #" + queryCount + " for: " + sql; } public int getQueryCount() { return queryCount; } public String getUrl() { return url; } }