优先级阻塞队列

时间:2018-03-09 23:20:59

标签: java algorithm priority-queue comparable blockingqueue

我有一个PriorityBlockingQueue我正在添加SocketHolder,如下所示。让我们说这个代码运行的当前数据中心是abc。我们有三个数据中心abcdefpqr

private static final PriorityBlockingQueue<SocketHolder> liveQueue = new PriorityBlockingQueue<>();

for (SocketHolder socket : listOfSockets) {
    liveQueue.add(socket);
}

现在我需要做的是:

  • 我必须在liveQueue上设置某种排序,以便数据中心为SocketHolder的所有abc(这是运行代码的当前数据中心),它们应位于top,这意味着当我们从liveQueue SocketHolder检索所有abc时,SocketHolder数据中心应先出现,然后再出现在其他所有pqr上。同样适用于当前数据中心为defSocketHolder
  • 的情况

下面是我的compareTo类,它实现了Comparable接口,但我在liveQueue方法中混淆了我需要做的事情,以便在SocketHolder的顶部(在向其添加元素之后) )我们拥有其数据中心为当前数据中心的所有public final class SocketHolder implements Comparable<SocketHolder> { private final Socket socket; private final Datacenter dc; private final Context context; public SocketHolder(Socket socket, Datacenter dc, Context context) { super(); this.socket = socket; this.dc = dc; this.context = context; } @Override public int compareTo(SocketHolder o) { // String currentDC = Utils.CURRENT_DATACENTER.get().name(); return 0; } } ,然后是其他没有优先级的数据中心。

gen1

1 个答案:

答案 0 :(得分:1)

实时数据中心将被分配优先级1,其他数据中心优先级为2.队列将首先处理最低优先级。

$( "#checkme" ).on( "click", function() {
        if($( "#checkme:checked" ).length > 0) {
               $('#submit').prop('disabled', false);
        } else{
               $('#submit').prop('disabled', true);
        }  
});