这是面试问题。
第一部分是使用一个或多个堆栈来实现队列。这是一个众所周知的问题,我给出了与方法2 here类似的答案。
在第二部分,我被问到我编写的代码是否是线程安全的。我的回答是,这是不安全的,因为多个线程可能同时修改同一对象(第一或第二堆栈)。
然后有人问我是否可以使此代码成为线程安全的。我建议用Stack<Integer>
替换ConcurrentLinkedDeque<Integer>
类,这是一个线程安全的堆栈。
面试官似乎不喜欢这个主意。
您是否对如何使代码线程安全有更好的想法?