You finally block need to belong to the outer try, not to the inner try. If timer.schedule fails then your finally block is never executed. Something like:
public void performUpdate() throws exception {
Timer timer = null;
try {
// At this line a new Thread will be created
timer = new Timer();
try {
timer.cancel();
} catch (Exception e) {
//Notify the task owner of the exception
}
} finally {
if ( timer != null ) timer.close();
}
}