benve / EsempiRMI

RPC tra processi Java. Una vecchia collezione di esempi.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Esempi di sincronizzazione con Java e RMI

Compilazione:

$ mkdir -p build/classes/ 
$ javac -d build/classes/ src/pc/server/*.java src/pc/*.java src/pc/countdown/*.java

Esecuzione:

Server

$ java -cp build/classes/ pc.server.Server 5

Client

$ java -cp build/classes/ pc.Client 10 10 127.0.0.1

Client CountDown

 
$ java -cp build/classes/ pc.countdown.CountDownClient 10 10 127.0.0.1

Descrizione Classi:

pc.server.RMICoda
L’interfaccia di una coda con metodi bloccanti. Write scrive un intero nella coda (il primo parametro e’ un id solo per debug).
Read legge un intero e lo toglie dalla coda (il parametro e’ un id solo per debug).
pc.server.Server
Il server RMI che implementa la coda. Istanzia un oggetto che implementi l’interfaccia RMICoda e lo rende chiamabile da remoto.
Per istanziare un diverso tipo di coda va decommentata la relativa linea di codice e ricompilata la classe.
pc.server.CodaSemplice
Una coda che implementa RMICoda. Non ha meccanismi di sincronizzazione !
Ad ogni esecuzione molto probabilmente fallisce.
pc.server.CodaSincronizzata
Una coda che implementa RMICoda. Usa i blocchi synchronized, wait() e notify() per la sincronizzazione.
pc.server.CodaLocks
Una coda che implementa RMICoda. Usa gli oggetti Lock per la sincronizzazione.
pc.server.CodaBloccante
Una coda che implementa RMICoda. Usa una struttura dati BlockingQueue per la sincronizzazione.
pc.Client
Il client RMI che si collega al server. Crea un numero specificato di thread produttore e consumatore, i thread si collegano alla coda remota scrivendo e leggendo numeri random.
pc.Producer
Chiama il metodo remoto write per inserire un intero nella coda.
pc.Consumer
Chiama il metodo remoto read per togliere un intero dalla coda. Se il valore restituito e’ “null” c’e’ stato un errore di sincronizzazione.
pc.countdown.*
Client, Producer e Consumer sono implementati usando gli oggetti CountDownLatch per la sincronizzazione dei thread.

About

RPC tra processi Java. Una vecchia collezione di esempi.