Eventualmente potresti descrivere anche gli intenti del codice che hai scritto? Perché, oltre alla marea di errori di copia/incolla per cui non compila, è anche di difficile comprensione, le variabili sono male dichiarate e potrei andare avanti.
Onestamente non credo che questo forum sia il luogo adatto in cui sottoporre il proprio codice a peer-review, ma anche solo per avere un parere preciso un malcapitato sviluppatore che vuole aiutarti si ritrova a dovere decifrare codice e alla fine desiste ... postare qualcosa di leggibile e magari commentato (nel codice o post) è nell'interesse soprattutto tuo, per ricevere più risposte.
Tutto questo detto in modalità Peace And Love, sia chiaro
Un paio di suggerimenti:
1) prima fixerei la versione di codice che hai già scritto. sei conscio che hai scritto un codice multithreaded e che quindi sono obbligatorie tutte le accortezze del caso? Hai esperienza con lo sviluppo multithread?
2) fatto questo, puoi provare eventualmente a passare ad utilizzare, come ti è stato suggerito, IO asincrono; però vedi tu se nel contesto di utilizzo della tua applicazione un IO bloccante risulta un collo di bottiglia ...