package org.limewire.concurrent;
import org.limewire.service.ErrorService;
/**
* A <code>Thread</code> that sets the <code>UncaughtExceptionHandler</code> to
* forward uncaught exceptions to {@link ErrorService}.
*/
public class ManagedThread extends Thread {
private static UncaughtExceptionHandler HANDLER =
new ErrorServiceHandler();
/**
* Constructs a ManagedThread with no target.
*/
public ManagedThread() {
super();
setPriority(Thread.NORM_PRIORITY);
setUncaughtExceptionHandler(HANDLER);
}
/**
* Constructs a ManagedThread with the specified target.
*/
public ManagedThread(Runnable r) {
super(r);
setPriority(Thread.NORM_PRIORITY);
setUncaughtExceptionHandler(HANDLER);
}
/**
* Constructs a ManagedThread with the specified name.
*/
public ManagedThread(String name) {
super(name);
setPriority(Thread.NORM_PRIORITY);
setUncaughtExceptionHandler(HANDLER);
}
/**
* Constructs a ManagedThread with the specified target and name.
*/
public ManagedThread(Runnable r, String name) {
super(r, name);
setPriority(Thread.NORM_PRIORITY);
setUncaughtExceptionHandler(HANDLER);
}
private static class ErrorServiceHandler implements UncaughtExceptionHandler {
public void uncaughtException(Thread t, Throwable e) {
ErrorService.error(e, "Uncaught thread error: " + t.getName());
}
}
}