The SurrogateLockerThread is currently used by both G1 and CMS to lock the Reference pending list. However, there's quite a bit of unnecessary code duplication and special case handling in this area. This could fairly easily be avoided by generalizing the code.