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

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

大家讲道理
大家讲道理

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

membalas semua(3)
迷茫

Selesai, saya menulis gelung tak terhingga, terima kasih semua.

迷茫

Anggap anda berada dalam mod bersendirian

sementara (benar){

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

}

PHPzhong

Secara amnya, keluaran dan pengumpulan data sepadan dengan dua urutan atau proses untuk mencapai tujuan tak segerak dan memaksimumkan pemprosesan. Jadi apa yang anda katakan adalah betul, seseorang terus menambah data dan satu terus mendapat data, tetapi terdapat masalah jika anda menambah data terlalu perlahan atau terlalu cepat, atau data diproses terlalu perlahan atau terlalu cepat, ia akan berlaku kosong atau baris gilir penuh Apabila keadaan ini berlaku, ini bermakna satu pihak perlu menunggu pihak lain menyelesaikan tindakan sebelum meneruskan, yang mengurangkan daya pengeluaran, jadi biasanya terdapat pulangan tamat masa.
Yang berikut ialah baris gilir mesej yang diterima tanpa tamat masa

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;
        }

    }
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan