Che cos'è il messaggio che passa in Java? Se è possibile, si prega di fornire un esempio.Cosa passa il messaggio?
risposta
Message Passing In Java
Quando un thread invia un messaggio (un oggetto) a un altro thread.
Utilizzato per comunicazione thread e sincronizzazione in ambienti in cui i thread non hanno memoria condivisa Quindi i thread non possono condividere semafori o monitor e non possono utilizzare variabili condivise per comunicare. Il passaggio dei messaggi può ancora essere utilizzato, ovviamente, in una piattaforma di memoria condivisa.
I messaggi vengono inviati attraverso un canale con un'operazione come send (canale, messaggio) e ricevuti da un canale con un'operazione come receive (canale, messaggio). I messaggi possono essere passati in modo sincrono, vale a dire i blocchi del mittente fino a quando il destinatario non riceve un messaggio e il destinatario blocca fino a quando il mittente non invia un messaggio. Poiché il mittente e il ricevente si trovano in specifici punti noti del loro codice in un momento specifico noto di tempo, il passaggio sincrono dei messaggi viene anche chiamato un semplice rendez-vous con un flusso di informazioni unidirezionale dal mittente al ricevente. Un esempio è un agente di gioco di scacchi. Gli agenti possono elaborare i messaggi in modo sincrono, dal momento che saranno handshaking durante l'intero gioco.
Nel passaggio di messaggi asincroni, il mittente non blocca. Se non c'è un ricevitore in attesa di ricevere il messaggio, il messaggio viene accodato o memorizzato nel buffer. Il ricevitore blocca ancora se non vi è alcun messaggio in coda o buffered quando viene eseguito un ricevimento.
Questo davvero aiutato. Grazie! – ericraio
** 1) ** Per l'interazione tra thread, Quando preferire 'send()'/'receive()' su 'get()'/'put()' su oggetto condiviso? ** 2) ** Hai detto che il passaggio dei messaggi può essere utilizzato nella piattaforma di memoria condivisa, ma [risposta] (https://stackoverflow.com/a/1853317/3317808) dice, * i lavoratori non possono modificare i dati l'uno dell'altro. * – overexchange
La tua domanda è un po 'vaga, ma suppongo che potresti riferirti all'API del servizio messaggi Java? Se è così, Wikipedia può dirti tutto: http://en.wikipedia.org/wiki/Java_Message_Service
Ma se stai parlando di più messaggi "generici" che passano, allora ti suggerisco di dare un'occhiata al link ewernli pubblicato!
Sì. Sto chiedendo in base alla chiamata metodi sull'oggetto – Pavalesh
Interazione classica tra due thread: un produttore e un consumatore.
import java.util.Vector;
class Producer extends Thread {
static final int MAXQUEUE = 5;
private Vector messages = new Vector();
public void run() {
try {
while (true) {
putMessage();
sleep(1000);
}
}
catch(InterruptedException e) { }
}
private synchronized void putMessage()
throws InterruptedException {
while (messages.size() == MAXQUEUE)
wait();
messages.addElement(new java.util.Date().toString());
notify();
}
// Called by Consumer
public synchronized String getMessage()
throws InterruptedException {
notify();
while (messages.size() == 0)
wait();
String message = (String)messages.firstElement();
messages.removeElement(message);
return message;
}
}
class Consumer extends Thread {
Producer producer;
Consumer(Producer p) {
producer = p;
}
public void run() {
try {
while (true) {
String message = producer.getMessage();
System.out.println("Got message: " + message);
sleep(2000);
}
}
catch(InterruptedException e) { }
}
public static void main(String args[]) {
Producer producer = new Producer();
producer.start();
new Consumer(producer).start();
}
}
Ma ancora si condivide un buffer per accedere attraverso la sincronizzazione. Quanto è diverso l'operazione 'get()' e 'put()'? – overexchange
- 1. Messaggio distribuito che passa in D?
- 2. Utilizzando $ @ per il messaggio di errore che passa nel modulo
- 3. OOP - Messaggio che passa in C#
- 4. Cosa fare con questo messaggio?
- 5. Perché creazione processo Erlang e il messaggio che passa il tempo meno di Java e C#
- 6. Che cosa significa "CL" nel messaggio di commit? Cosa significa?
- 7. Qualcuno sa cosa significa messaggio ShellHook HSHELL_RUDEAPPACTIVATED?
- 8. Che cosa significa messaggio di avvertenza NSObject.BroadSystemFontWeights?
- 9. Sviluppatore PHP-MySQL che passa a PostgreSQL. Cosa devo sapere?
- 10. Ritardo: passa il mouse nei CSS3?
- 11. Passa il valore del parametro nei percorsi?
- 12. differenza tra bus messaggio e il messaggio mediatore
- 13. passa il futuro a quandoReady fallisce
- 14. Cambiare il messaggio di pausa
- 15. Traduci il messaggio flash
- 16. Errore messaggio messaggio byte
- 17. Cosa succede quando si passa il riferimento al letterale in C++?
- 18. NUnit TestCaseSource passa il valore alla fabbrica
- 19. Come si passa a una data specifica nella cronologia o il messaggio meno recente in un canale Slack nell'app desktop?
- 20. Che cosa significano i dettagli di un messaggio APPCRASH?
- 21. Cosa significa questo messaggio sandboxing "nega mach-lookup"?
- 22. Come usare 'is' quando il tipo passa attraverso il metodo?
- 23. Passa il puntatore al template come funzione?
- 24. Swift: Passa il tipo come parametro
- 25. Passa il parametro long a asp.net webapi
- 26. Passa il tocco alla vista sotto
- 27. Passa il valore selezionato alla funzione vuejs
- 28. JQUERY se non si passa il mouse
- 29. Ignora a: passa il mouse con jQuery?
- 30. Passa il contatto con un UIViewController
in quale contesto? Il passaggio del messaggio – Bozho
può riferirsi a diverse cose, che vanno dal semplice metodo di chiamata agli oggetti, alla comunicazione tra thread, alla comunicazione distribuita tra diversi computer - di quale tipo ti stai interrogando? – TofuBeer
Intendi "invio messaggio" o "richiamo metodo"? Nel qual caso la risposta http://stackoverflow.com/questions/2852381/calling-a-method-or-sending-a-message-in-objective-c è buona. – ewernli