基本上,我正在构建一个 SMS 应用程序,它从数据库中读取待处理的 SMS 消息,然后将它们全部发送。SMS 消息有 2 种类型;可以随时发送的普通消息,以及必须在任何普通消息之前发送的紧急消息。我在应用程序中使用多线程。
我想要 2 个任务队列;一个用于普通消息,一个用于紧急消息。然后池中的线程将执行两个队列中的任务,考虑到除非没有紧急消息,否则无法发送来自正常消息的 SMS 消息。
实现将如下所示:
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
吗?