Using HttpContext.Current.Items we can access variables from current request
My question is what if the request moves to different thread, can we still access this ?
You can always access HttpContext.Current.Items
from the current request, no matter which thread ASP.Net decides to run the request on.
If you're specifically asking about behavior with async actions, the ASP.Net runtime will handle all threading issues transparently for you. For more information on that topic, I suggest
http://www.asp.net/mvc/tutorials/mvc-4/using-asynchronous-methods-in-aspnet-mvc-4