基本上我構建了一個SMS應用程序,它從數據庫中讀取掛起的SMS消息,然後將它們全部發送出去。有兩種類型的SMS消息; 正常消息可以隨時發送,緊急消息必須在任何正常消息之前發送。我正在應用程序中使用多線程。同時執行2個任務列表
我想有2隊任務;一個用於正常消息,一個用於緊急消息。然後,在池中的線程會從兩個隊列,除非有沒有緊急消息執行任務,考慮到從正常郵件沒有SMS mesages可以發送帳戶。
的實施將東西如下:
public class SMSApplication
{
private Queue<SMSTask> normalMessages = new Queue<SMSTask>(); // not necessarily java.util.Queue
private Queue<SMSTask> urgentMessages = new Queue<SMSTask>();
// ...
public void addNormalMessage(SMSTask task)
{
normalMessages.add(task);
}
public void addUrgentMessage(SMSTask task)
{
urgentMessages.add(task);
}
public void runApplication()
{
/* iterate over the queues, create new threads or select existing ones from a pool, and then execute the tasks */
}
}
什麼是實現這一目標的最佳途徑?我可以用BlockingQueue
完成嗎?
要在兩端刻錄它,可能是BlockingDeque? http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/BlockingDeque.html?副作用是LIFO頭部;也許你對此很好。 –
...哎呀,錯誤的網址;意思是:http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/PriorityBlockingQueue.html –
@ full.stack.ex謝謝!我會看看['PriorityBlockingQueue'](http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/PriorityBlockingQueue.html)。 –