Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Removed isRunning from last NCCE

...

Code Block
bgColor#FFcccc
class DBConnector implements Runnable {
  final String query;
  private final Object lock = new Object();
  private boolean isRunning = false;
  private class MultipleUseException extends RuntimeException {};
  
  DBConnector(String query) {
    this.query = query; 
  }
	
  public void run() {
    synchronized (lock) {
      if (isRunning) {
        throw new MultipleUseException();
      }
      isRunning = true;
    }

    Connection con;
    try {
      // Username and password are hard coded for brevity
      con = DriverManager.getConnection("jdbc:driver:name", "username","password");  
      Statement stmt = con.createStatement();
      ResultSet rs = stmt.executeQuery(query);
    } catch (SQLException e) {
      // Forward to handler
    }
    // ... 
  }  


  public static void main(String[] args) throws InterruptedException {
    DBConnector connector = new DBConnector(/* suitable query */);
    Thread thread = new Thread(connector);
    thread.start();
    Thread.sleep(5000);
    thread.interrupt();
  }
}

...