static Thread startThreadRegisteredInCollection(Cl collection, S name, Runnable r) { if (r == null) null; Thread t = newThread(name, r { try { r.run(); } finally { remove(collection, currentThread()); } }); add(collection, t); startThread(t); ret t; }