基本上我构建了一个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)。 –