Setting time-out attribute is causing @BeforeMetod and @Test methods to be executed in different threads. If you remove this attribute, then they are executed in same thread (which is expected behavior).
To reproduce it it one can setup the tests same way as described in this article:
with only one difference (time-out):
<suite name="Test-method Suite" time-out="123456789" parallel="methods" thread-count="2" >
It is crucial to have possibility to run @BeforeMethod and @Test in same thread because it's the only way one can use ThreadLocal to share data between @BeforeMethod and @Test.