Вы хотите, чтобы пул потоков обрабатывал запросы:
Executor pool = Executors.newFixedThreadPool(10); // There are at most 10 concurrent request handler running,
// new requests will be putted in queue
Когда приходит новый запрос, вы делаете:
pool.submit(() -> server.updateStockValue(stock));
Но я думаю, вам следует выполнить синхронизацию на вашемlist
уровень, а не уровень класса, подобный этому:
public synchronized void updateStockValue(Stock st) {
//do something with stocks list;
}