If we need a NamedThreadLocal with an initialization value, it will be very convenient to use the withInitial method of this PR, like this:

NamedThreadLocal.withInitial("SimpleThreadScope", HashMap::new);

It's just a suggestion. If you think it's okay, I hope it can be absorbed into this project.

Comment From: snicoll

Fixed by e1d0176 and polished in 5878a07. Thanks again @chenqimiao