Improve locking usage.

  - Call System.currentTimeMillis() outside of a synchronized context.
  - Use AtomicInteger over volatile (though it would be nice if it 
  included a bit mask checking operation).
  - Use a Lock over synchronized(this).

git-svn-id: https://svn.apache.org/repos/asf/logging/log4j/log4j2/trunk@1590457 13f79535-47bb-0310-9956-ffa450edef68