Since there has to be at least one state.  I would think it would be more clear to define this method as logicalThread(String threadName, String state, String.. additionalStates) to show that a state is required.  I know it can make the handling a little less clean but makes the API easier to use.  WDYT?