Как вы определили очередь. Вы можете сделать это с помощью многопоточности (то есть создать экземпляр пула потоков) и позволить пулу потоков выталкивать объекты в очередь.
Однако, если у вас есть что-то вроде поиска файлов в объектах очереди, то, очевидно, вы захотите, чтобы первый объект очереди завершился до запуска второго (то есть, если они используют один и тот же файл).