Threads einbinden

phil21xx

Mitglied
Hallo an alle,

Habe ein kleines Problem. Wie kann ich denn meinen Server (siehe unten) ganz simpel über EINEN Thread starten lassen und dazu noch einen ZWEITEN Thread einpflegen der einfach nur schläft oder "die Sekunden zählt"!

Java:
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
  

public class ServerMahnung extends UnicastRemoteObject implements SCInterface  {
    
    /** Creates a new instance of ServerMahnung */
    public ServerMahnung() throws RemoteException {
    }
    
 
 
    
    public String getMahnung (String x) throws RemoteException{
  
    return  "Mahnungshöhe :" + x + " * 1.03 ";
}
    
  
 
 
 
public static void main (String[]args){
    
    try{
        
        ServerMahnung servermahnung = new ServerMahnung();
        Naming.rebind("ServerMahnung", servermahnung);
        System.out.println("Server ist funktionstüchtig!");
    }
    
    catch(Exception ex){
        ex.printStackTrace();
    }
}
}

Vielen Dank im Voraus
phil21xx
 

javimka

Top Contributor
Um Sekunden zu zählen könntest du einen Timer verwenden. Ist zwar seltsam, das Swing Packet hier zu verwenden, aber so sollte es gehen:
Folgendes in den Konstruktor von ServerMahnung:
Java:
new Timer(1000,new ActionListener() {
  public void actionPerformed(ActionEvent event) {
    counter++;
  }
}).start();

counter ist dann eine Membervariable von ServerMahnung.
 

javimka

Top Contributor
Was genau soll parallel ausgeführt werden? In deiner Klasse gibt es ja keine Methode, ausser dem Konstruktor und getMahnung. Soll bereits der Konstruktor parallel zur main-Methode ausgeführt werden?

Vielleicht ist es ja das, was du suchst.
Java:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Random;

import javax.swing.Timer;

public class ServerMahnung extends UnicastRemoteObject implements
		SCInterface, Runnable {

	private int counter = 0;

	/** Creates a new instance of ServerMahnung */
	public ServerMahnung() throws RemoteException {
		new Timer(1000, new ActionListener() {
			public void actionPerformed(ActionEvent event) {
				counter++; // zähle die Sekunden
			}
		}).start();
		new Thread(this).start(); // starte run() parallel
	}

	public String getMahnung(String x) throws RemoteException {

		return "Mahnungshöhe :" + x + " * 1.03 ";
	}

	public void run() {
		System.out.println("run startet parallel und macht irgendwas");
		Random rand = new Random();
		while(true) {
			try {
				System.out.println("Seit dem Start sind "+counter+" Sekunden vergangen");
				Thread.sleep(rand.nextInt(5000)+500);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}

	public static void main(String[] args) {

		try {

			ServerMahnung servermahnung = new ServerMahnung();
			Naming.rebind("ServerMahnung", servermahnung);
			System.out.println("Server ist funktionstüchtig!");
		}

		catch (Exception ex) {
			ex.printStackTrace();
		}
	}
}
 

phil21xx

Mitglied
javimka füg das bitte mal in meinen code ein, damit ich weiss wie du das meinst - bekomme immer einen Fehler.
 
Zuletzt bearbeitet:

javimka

Top Contributor
Ich weiss nicht, wie du das über deinen RMI Server ausdrucken willst.
Aber du siehst doch sicher, dass in meiner run() Methode mehr oder weniger Unsinn steht, der nur die Funktionsweise demonstrieren soll. Entferne diesen Code und schreibe das ins run(), was wirklich passieren soll.

Was kriegst du denn für einen Fehler?
 

phil21xx

Mitglied
Kann ich nicht den Server über die run() Methode starten lassen und nicht in meiner public static void main(String[] args)..:

Das wäre das gewünschte, als meinen Code (siehe unten) durch den "Unsinn" ersetzen.

Java:
ServerMahnung servermahnung = new ServerMahnung();
Naming.rebind("ServerMahnung", servermahnung);
System.out.println("Server ist funktionstüchtig!");

Mit deinem Coding kann ich momentan nichtmehr mit meiner GUI auf über meine RMI Client Server Anwendung etwas versenden.

Es wird im Interpreter folgendes angezeigt:

run startet parallel und macht irgendwas
Seit dem Start sind 0 Sekunden vergangen
Server ist funktionstüchtig!
Seit dem Start sind 4 Sekunden vergangen
Seit dem Start sind 7 Sekunden vergangen
Seit dem Start sind 10 Sekunden vergangen
Seit dem Start sind 15 Sekunden vergangen
.
.
.

Davor mit dem alten Coding wurde mir über die C:\WINDWOS\system32\cmd.exe

Server ist funktionstüchtig!

ausgegeben und man konnte Daten versenden.


Problem:

Es sollte also nur der Serveraufruf/aufbau über die run() Methode gestartet werden

Java:
ServerMahnung servermahnung = new ServerMahnung();
Naming.rebind("ServerMahnung", servermahnung);
System.out.println("Server ist funktionstüchtig!");
 
Zuletzt bearbeitet:

javimka

Top Contributor
Lösche doch meinen Code und setze deinen an dessen Stelle, innerhalb der main-Methode. Dann funktioniert alles wie vorher, nur dass es nicht mehr der main-Thread ist, der das ausführt, sondern ein Neuer.
 

Sotsch

Mitglied
Java:
Thread t1 = new Thread(new Runnable(){
  public void run() {
     while(true){
     }
  }
});

t1.start();

So kann man ganz einfach mehrere Threads erstellen :)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
T TCP mit und ohne Threads Netzwerkprogrammierung 1
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
K Threads/Server/telnet Fehler Netzwerkprogrammierung 2
D Exception Handling bei In/Outputsockets in eigenen Threads Netzwerkprogrammierung 1
C Frage zu Threads & Server Netzwerkprogrammierung 4
K Threads closen und Sockets schliessen Netzwerkprogrammierung 5
J Threads & Streams Netzwerkprogrammierung 9
P RMI Threads die über RMI auf Datenbank zugreifen Netzwerkprogrammierung 2
S HTTP ServerSockets und Threads Netzwerkprogrammierung 5
B Sockets, Threads & Plugins Netzwerkprogrammierung 7
T Verbindungsversuche über TCP Sockets von mehreren Threads führt zu Serverabsturz Netzwerkprogrammierung 2
R Threads mit einem WebService Netzwerkprogrammierung 4
M Verständnisfrage zu RMI und Threads Netzwerkprogrammierung 2
L einfacher server ohne threads Netzwerkprogrammierung 4
A Threads auflisten und nacheinander ansprechen Netzwerkprogrammierung 6
C I/O - Synchronisation durch Threads in einem ChatClient Netzwerkprogrammierung 4
J Probleme mit Threads (Client terminiert) Netzwerkprogrammierung 4
P RMI Callback (mit Threads?) Netzwerkprogrammierung 3
T RMI Threads und Synchronized Netzwerkprogrammierung 13
A Datenverteilung: Mehrere Threads verwenden? Netzwerkprogrammierung 4
S Threads beim Server koordinieren Netzwerkprogrammierung 5
L ClientServer mit 2 Threads Netzwerkprogrammierung 5
N Threads und Socketprogrammierung Netzwerkprogrammierung 4
G 1 Socket 2 Threads problem Netzwerkprogrammierung 13
K Problem mit Threads Netzwerkprogrammierung 3
S Threads bei Web Service sinnvoll oder Alternative? Netzwerkprogrammierung 2
K Hintergrund - Threads Netzwerkprogrammierung 3
G Socket Programmierung - Max. Threads Netzwerkprogrammierung 5
C NetScanner arbeitet trotz Threads langsam Netzwerkprogrammierung 6
L UDP-Server mit Threads Netzwerkprogrammierung 8
K Windows 10 Threads gleichzeitig Netzwerkprogrammierung 18
C Join von Threads bei I/O-Operation Netzwerkprogrammierung 6
F Threads synchronisieren mit Pipes Netzwerkprogrammierung 3
G benötige Beispiel für parallel ablaufende Threads Netzwerkprogrammierung 3
F Problem mit Threads und Sockets Netzwerkprogrammierung 3
TRunKX Threads beenden sich selber? Netzwerkprogrammierung 6
T Kleiner Chatserver: Threads oder Multiplex? Netzwerkprogrammierung 18
S persistence.xml in JFX Projekt einbinden Netzwerkprogrammierung 2
B Webstart + externe/lokale Plugins/JARS einbinden Netzwerkprogrammierung 10
H Kartenspiel als Multimedia Applikation in Homepage einbinden Netzwerkprogrammierung 20
A org.apache.commons http client in Netbeans einbinden Netzwerkprogrammierung 3
Y Servlets oder cgi in Server einbinden Netzwerkprogrammierung 22
M Download-Manager in System/Browser einbinden Netzwerkprogrammierung 11
O Einbinden eines java-servers Netzwerkprogrammierung 9

Ähnliche Java Themen

Neue Themen


Oben