Это вопрос интервью.
Первая часть заключалась в реализации очереди с использованием одного или более стека. Это общеизвестный вопрос, и я дал ответ, который похож на метод 2 здесь .
Во второй части меня спросили, является ли написанный мною код потокобезопасным. Мой ответ состоял в том, что это небезопасно, поскольку несколько потоков могут изменять один и тот же объект (первый или второй стек) одновременно.
Затем меня спросили, могу ли я сделать этот код поточно-ориентированным. Я предложил заменить класс Stack<Integer>
на ConcurrentLinkedDeque<Integer>
, который является потокобезопасным стеком.
Похоже, что интервьюеру не понравилась эта идея.
У вас есть лучшее представление о том, как сделать поток кода безопасным?