Also looking closer it looks like you have 2 distinct pieces of state that are both protected by the instance monitor.  We could change this to use 2 different lock instances.  Then the act of starting and stopping the thread won't block access to the segment collections.