我正在尝试使用监视器来实现线程同步,以解决一个简单的队列问题,即排队等候使用ATM机并优先考虑老年人的人。
答案 0 :(得分:1)
您可以使用java.util.concurrent.BlockingQueue
接口提供的一种实现,而不用编写自己的代码,例如java.util.concurrent.PriorityBlockingQueue
。
一个无界阻塞队列,它使用与类PriorityQueue相同的排序规则,并提供阻塞检索操作。尽管此队列在逻辑上是不受限制的,但是尝试进行添加可能会由于资源耗尽而失败(导致OutOfMemoryError)。此类不允许使用null元素。依赖自然顺序的优先级队列也不允许插入不可比较的对象(这样做会导致ClassCastException)。
如果您正在学习并发性,则在java.util.concurrent
包中探索类是一个很好的练习,该代码编写和记录都很好。