package com.brightgenerous.commons.concurrent; import java.util.logging.Level; import java.util.logging.Logger; public abstract class ThreadInvoke implements Runnable { private static final Logger log = Logger.getAnonymousLogger(); @Override public final void run() { try { invoke(); } catch (RuntimeException e) { if (log.isLoggable(Level.INFO)) { log.log(Level.INFO, "", e); } throw e; } catch (Exception e) { if (log.isLoggable(Level.INFO)) { log.log(Level.INFO, "", e); } throw new RuntimeException(e); } } protected abstract void invoke() throws Exception; }