Wie Bummi schon sagte: Für jeden Insert-Lauf erzeugst du einen eigenen Thread, übergibst im Constructor die benötigten Daten (KEINE Verweise auf
VCL-Komponenten wie TListBox, TStringGrid oder dergleichen!) und setzt ebenfalls im Constructor (nach inherited) FreeOnTerminate auf TRUE.
Du überschreibst die Execute-Methode des Threads (in der Methode dann das inherited entfernen), lässt dort deine Queries abarbeiten und wenn der Thread damit fertig ist, gibt er sich von selbst frei.