RMI thread safe ?

Status
Nicht offen für weitere Antworten.
G

Gugliotta

Gast
Hallo zusammen,

ich progge gerade mit RMI herum.

Wenn gleichzeitig mehrere Clients die RMI Schnittstelle und ein Objekt/eine Funktion nutzen,
wird dann für jeden Client ein Thread erzeugt ?

Sprich, muss ich da noch selbst wechselseitigen Ausschluß, Threads, o.ä. sicherstellen, dass sie sich nicht gegenseitig beeinflussen können, oder wird das schon von RMI bereitgestellt ?
 

Grizzly

Top Contributor
Gute Frage ???:L . RMI an sich sollte schon Thread safe sein. Ansonsten könnte man damit wahrscheinlich nicht viel anfangen. Vor allem da ja Application Server, wie bspw. JBoss, auf RMI aufbauen.
Deine eigenen Klassen musst Du dann natürlich selber Thread safe machen ;) .
 
G

Gugliotta

Gast
Danke Grizzly.

Du hast mir aber nicht so überzeugt geklungen. :wink:

Weiss jemand mehr, genauer Bescheid ?
 
G

Guest

Gast
Alle Clients greifen auf die gleiche Instanz eines Remote-Objekts zu.
Klartext: Du musst selbst für die Thread-Sicherheit sorgen.
 
G

Guest

Gast
Es wird nur für jeden remote-Methodenaufruf ein eigener Thread gestartet, d.h. der Server kann dann mehrere Clients gleichzeitig bedienen. Die arbeiten dann aber wie gesagt auf einer Instanz.
 
L

Leeprasteen

Gast
bedeutet das, dass je client nur in einer klasse eine schnittstelle zum Server-Objekt angelegt werden soll. diese kann dann von allen anderen klassen auf dem client genutzt werden und müsste threadsafe angelegt sein!?
 
G

Gugliotta

Gast
Sie arbeiten auf einer Instanz. Ok.
Für jeden Methodenaufruf wird aber ein eigener Thread erzeugt.

Dass heisst, dass wenn zwei Clients ein und diesselbe Methode aufrufen,
für jeden Client ein Thread erzeugt wird. Diese Threads laufen getrennt voneinander ab.
Also kann es nicht passieren, dass 2 Clients, sofern sie dieselbe Methode mit denselben Variablen aufrufen,
sich gegenseitig in die Quere kommen, und der eine ne Variable überschreibt die der andere dann benutzt.

Stimmt's ????
Oder hab ich es immer noch nicht verstanden ???? :(
 

apfelsine

Aktives Mitglied
ich wüßte gerne ob diese Ausführung wahr ist:

wenn ich verhindern möchte, das ein Client in den Variablen des
anderen Clients rumpfuscht, weil der die gleiche Instanz eines Objektes
verwendet, muß ich meinen Server als Thread für jeden Client starten, damit
das nicht passiert?
ist das so?!?


und was macht die RMI-Registry, wenn ich mit jedem Thread ein Objekt eintrage,
das den gleichen Namen hat? das wird dann vermutlich überbügelt oder?


gruß
apfelsine
 

foobar

Top Contributor
wenn ich verhindern möchte, das ein Client in den Variablen des
anderen Clients rumpfuscht, weil der die gleiche Instanz eines Objektes
verwendet, muß ich meinen Server als Thread für jeden Client starten, damit
das nicht passiert?
ist das so?!?
Nein, du mußt die Methoden im RemoteObject synchronisieren, damit die Clients sich nicht in die Quere kommen.
 

foobar

Top Contributor
Code:
public class MyImpl extends UnicastRemoteObject
{
   public MyImpl() throws RemoteException
   {
   }

   public snychronized void deposit()
   {
       // deposit some money
   }

   public synchronized double withdraw()
   {
       // withdraw money from account
   }

}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Thread und Ratelimiter Netzwerkprogrammierung 4
F Thread "extern" beenden Netzwerkprogrammierung 3
OnDemand Linux RAM per Thread Netzwerkprogrammierung 3
V Socket Audio Clip loopen ohne neuen Thread Netzwerkprogrammierung 2
C Thread Netzwerkprogrammierung 9
platofan23 Socket Hilfe mit Socket Thread und ArrayList Netzwerkprogrammierung 6
A RMI RMI - Thread Objekte übertragen und auf anderer Machine weiterlaufen lassen Netzwerkprogrammierung 0
S Socket ThreadPool oder Thread pro Client? Netzwerkprogrammierung 11
T Socket Server starten Thread Problem Netzwerkprogrammierung 12
P Wie spreche ich einen Thread an? Netzwerkprogrammierung 20
M Thread Scheduler Java 5.0? Netzwerkprogrammierung 2
7 Mehrere Verbindungen gleichzeitig in einem Thread mit ApacheHTTP Netzwerkprogrammierung 7
D Socket Dynamische Socket-Thread Erzeugung Netzwerkprogrammierung 2
B Socket Thread handling / Reader init Netzwerkprogrammierung 8
Z Socket Socket-Thread falsch? Netzwerkprogrammierung 5
Helgon Socket Thread Pooling Netzwerkprogrammierung 6
M Was macht Thread, wenn er aus einem "leeren" Inputstream liest ? Netzwerkprogrammierung 5
B callback thread udp Netzwerkprogrammierung 2
D RMI und Thread Netzwerkprogrammierung 4
S Kommunikationsproblem, Thread und manuel Netzwerkprogrammierung 4
U Socket Abhören eines Sockets/Ports in extra Thread Netzwerkprogrammierung 8
K ein Thread pro Stream Netzwerkprogrammierung 2
D Weiterer Thread auf Port 843 horcht Netzwerkprogrammierung 7
D Thread problem Netzwerkprogrammierung 3
S Thread, Daten vom Socket lesen Netzwerkprogrammierung 2
S Thread Transport Netzwerkprogrammierung 6
S Socket Thread in Schleife Netzwerkprogrammierung 4
G Objekte per TCP verschicken + Thread Netzwerkprogrammierung 4
T synchronized mit thread und rückgabe Netzwerkprogrammierung 4
Q Thread und Sockets... Netzwerkprogrammierung 2
2 Class mit ServerSocket erbt von Thread? Netzwerkprogrammierung 3
PAX Outputstream von anderem Thread verwenden lassen Netzwerkprogrammierung 5
C Server mit Multithreading (Thread-Pool) Netzwerkprogrammierung 2
E java.lang.NullPointerException aber nur wenns im Thread läuf Netzwerkprogrammierung 4
F EIN Thread in RMI auf Serverseite Netzwerkprogrammierung 3
G Server Thread beenden Netzwerkprogrammierung 16
T Socket-Thread: Designfrage Netzwerkprogrammierung 14
S Mit Thread arbeitende Maschine Netzwerkprogrammierung 6
T select() ohne NIO - oder wie Worker-Thread sauber beenden? Netzwerkprogrammierung 9
K Selbe Streams mehrfach nutzen (zusätl. Thread) Netzwerkprogrammierung 6
ven000m Thread Frage Netzwerkprogrammierung 11
B Thread.start() (run()) excption Netzwerkprogrammierung 2
M Thread läuft nicht weiter Netzwerkprogrammierung 2
B NullPointerException | Thread Netzwerkprogrammierung 4
U Current thread not owner Netzwerkprogrammierung 3
S readline-thread stoppt vorzeitig Netzwerkprogrammierung 6
J RMI - (RemoteException occurred in server thread) Netzwerkprogrammierung 2
S Webserverprogrammierung: Thread-Beschränkung Netzwerkprogrammierung 2
M Exception in thread "main" java.lang.NoClassDefFou Netzwerkprogrammierung 2
F problem mit thread bzw. netzwerkverbindung! Netzwerkprogrammierung 3
L netzwerk mit thread Netzwerkprogrammierung 3
A Thread gibt Nachrichten mehrmals aus (Messenger in Java) Netzwerkprogrammierung 3

Ähnliche Java Themen


Oben