Meine o.g. Lösung ist *etwas*... kompakter als deine. Nimm's mir bitte nicht übel, wenn ich dabei bleibe

Dein Beispiel ist dennoch hilfreich, wenn man einen bestimmten, evtl. eingeschränkten Zeichensatz benutzen möchte, danke.
Um zum Prüfen auf Kollisionen zurück zu kommen: Ich kann zwar eine Datenbank nach einem bestimmten Wert fragen und ihn, wenn dieser darin noch nicht vorhanden ist, einfügen. Allerdings ist nicht sichergestellt, dass nicht in der Zwischenzeit ein anderer Thread der Anwendung *(sehr, sehr) zufällig* auch diesen Wert erzeugt, abgefragt und eingefügt hat.
Wie lässt sich das verhindern? Ist ein `Lock`-Objekt eine gute Lösung (z.B. auch für das Erzeugen/ungestörte Einlesen/whatever von Dateien)? Würde es im Zusammenhang mit einer Datenbank evtl. zuviel Wartezeit verursachen und den Rest der Applikation ausbremsen?