Hi kurup,
Reentrant programs are functions/modules that do not hold static data between calls.
For example, given an online system, program Client calls program Server. For Server to be reentrant (it normally should be), Server must be coded not to 'remember' any data between calls. All data to be processed must be kept and passed in the call by program Client.
A reentrant program is one that can execute in multiple copies (threads) simultaneously. Each copy, of course, servicing a different request.
Dimandja