IOSessionImpl: use volatiles for time access functions instead of synchronized access
IOSessionImpl: use double checks whenever it is possible to reduce synchronized scope