消息队列 - java里面实现MQ的原理是什么?
大家讲道理
大家讲道理 2017-04-17 17:51:32
0
3
517

我现在想做一个消息队列,一边在不停的放数据,一边在不停的take,怎么保证这个take一直在执行?,是不是要写一个死循环的?还是有别的什么方式?

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

répondre à tous(3)
迷茫

C'est fait, j'ai écrit une boucle infinie, merci à tous.

迷茫

Supposons que vous soyez en mode autonome

pendant que(vrai){

object obj = queue.take();//这里会阻塞的
//去做别的处理

}

PHPzhong

Généralement, la libération et la collecte des données correspondent à deux threads ou processus pour atteindre des objectifs asynchrones et maximiser le débit. Donc ce que vous avez dit est vrai, on continue d'ajouter des données et on continue d'obtenir des données, mais il y a un problème si vous ajoutez des données trop lentement ou trop rapidement, ou si les données sont traitées trop lentement ou trop rapidement, cela se produira. est vide ou la file d'attente est pleine. Une fois que cette situation se produit, cela signifie qu'une partie doit attendre que l'autre partie termine l'action avant de continuer, ce qui réduit le débit, il y a donc généralement un retour de délai d'attente.
Ce qui suit est une file d'attente de messages obtenue sans délai d'attente

public Message receive() throws InterruptedException {
        
        synchronized (queue) {
            
            if(queue.isEmpty()){
                queue.wait(1000);
            }
            if(queue.isEmpty()){
                return null;//timeout
            }
            Message message=queue.get(0);
            queue.remove(0);
            return message;
        }

    }
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal