|
You last visited: Today at 19:16
Advertisement
[Java] Sinn von Threads in diesem Fall
Discussion on [Java] Sinn von Threads in diesem Fall within the Java forum part of the Coders Den category.
04/05/2014, 17:52
|
#1
|
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
|
[Java] Sinn von Threads in diesem Fall
Hey... ich arbeite zum ersten mal mit Threads. Arbeite grade an einer Personenverwaltung, sprich einem Programm, dass Daten von Personen aufnimmt und in einer Datei speichert.
Dazu habe ich hier zwei Anweisungen:
1. Ein Thread kümmert sich um die Kommunikation mit dem User.
2. Ein zweiter Thread kümmert sich um die Lese- und Schreibvorgänge.
Was macht der erste Thread also? Geht es dabei nur um die Eingabe des Nutzers im gesamten Programm? Ich habe im Vorfeld die Aufgabe ohne Threads lösen sollen und für so Sachen wie die Datenerfassung einfach eine Funktion gehabt.
Soll ich jetzt also einfach die Funktionen in die Klassen (also die Threads) einfach rein packen und das wars? So im Sinne von ErsterThread.personaufnehmen() um es aufzuführen? Ich weiß nicht, ob ich das richtig verstehe... an Sich kriege ich das hin ich will nur wissen ob ich das richtig verstehe, dass die Funktionen einfach da rein sollen und das wars.
Der zweite übernimmt dann die Funktionen des Schreibens und Lesens in/aus der Datei... das kapier ich dann schon.
Und dann benutz ich PipeWriter um mit dem Thread der mit dem User kommuniziert über den PipeReader dann mit dem anderen Thread die Daten zu übermitteln und zu sichern oder? Beim laden müsste ich das ganze dann aber umdrehen oder?
|
|
|
04/05/2014, 21:30
|
#2
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by Warnuk3r
Soll ich jetzt also einfach die Funktionen in die Klassen (also die Threads) einfach rein packen und das wars? So im Sinne von ErsterThread.personaufnehmen() um es aufzuführen?
|
Du verwechselst Threads mit Klassen, das sind 2 verschiedene Paar Schuhe.
Threads kann man nutzen, um gewisse Funktionen und Prozeduren auszulagern, ohne das der Hauptthread beeinflusst wird. Hast du nämlich eine GUI in deinem Programm und eine Funktion die sehr viele Daten in eine Textdatei schreibt, möchtest du ja nicht, das deine GUI nicht mehr reagiert, wenn die Daten geschrieben werden. Deshalb würde man in diesem Fall einen Thread nutzen. Dieser läuft dann im Hintergrund weiter (und beendet sich dann selber wenn er fertig ist - wobei ich mir da nicht sicher bin, ob das in jeder Sprache so ist).
Spezifische Beispiele zu Java kann ich dir leider nicht geben, da ich mit Java bisher noch nichts gemacht habe. Du wirst aber sicherlich auch so genug dazu finden.
|
|
|
04/05/2014, 23:21
|
#3
|
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
|
Quote:
Originally Posted by Mostey
Du verwechselst Threads mit Klassen, das sind 2 verschiedene Paar Schuhe.
Threads kann man nutzen, um gewisse Funktionen und Prozeduren auszulagern, ohne das der Hauptthread beeinflusst wird. Hast du nämlich eine GUI in deinem Programm und eine Funktion die sehr viele Daten in eine Textdatei schreibt, möchtest du ja nicht, das deine GUI nicht mehr reagiert, wenn die Daten geschrieben werden. Deshalb würde man in diesem Fall einen Thread nutzen. Dieser läuft dann im Hintergrund weiter (und beendet sich dann selber wenn er fertig ist - wobei ich mir da nicht sicher bin, ob das in jeder Sprache so ist).
Spezifische Beispiele zu Java kann ich dir leider nicht geben, da ich mit Java bisher noch nichts gemacht habe. Du wirst aber sicherlich auch so genug dazu finden. 
|
Ja aber Threads sind ja "Class balbla extends Threads" oder Runnable oder sonst was also sind Threads doch im Endeffekt dann diese Klassen? Deswegen habe ich es jetzt mal Klasse genannt
|
|
|
04/05/2014, 23:57
|
#4
|
elite*gold: 1091
Join Date: Jun 2007
Posts: 19,836
Received Thanks: 7,180
|
Quote:
Originally Posted by Warnuk3r
Ja aber Threads sind ja "Class balbla extends Threads" oder Runnable oder sonst was also sind Threads doch im Endeffekt dann diese Klassen? Deswegen habe ich es jetzt mal Klasse genannt 
|
Da liegst du sicher nicht ganz falsch. Threads sind zwar Klassen, man implementiert dort aber keine Funktionen. Man nutzt eine Instanz dieser Klasse um eine Funktion auszuführen.
Sieht in C# folgendermaßen aus:
Code:
Thread t = new Thread(ThreadStart(somefunc));
t.Start();
public void somefunc()
{
throw NotImplementedException;
}
Nachdem das Ende von somefunc() erreicht wird, beendet sich in diesem Fall auch der Thread. Vielleicht wird dir ja jetzt klar, warum man das so nutzt.
|
|
|
04/06/2014, 00:00
|
#5
|
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
|
Achso das heißt dass in einen Thread beziehungsweise die Klasse an sich keine Funktion rein kommt, außer die Run?
Das erklärt mir dann gleich alles vielen dank! Dachte da typisch an eine Klasse mit Funktionen dabei. So ergibt das ganze auch Sinn.
|
|
|
04/06/2014, 14:15
|
#6
|
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
|
Ich hatte eine ähnliche Aufgabe in der Schule, eine "Roboter-Fabrik" zu erstellen.
Beim Punkt 1 wie du schon sagst, die Ein-und Ausgaben verwalten, wie schon richtig steht Kommunikation, und solange das passiert sollst du in eine Datei schreiben bzw. lesen.
Ich gehe davon aus dass das Programm solange läuft bis der Benutzer das Programm beendet, deswegen brauchst du Watchdogs für deine Threads, um einen Thread sicher zu beenden und sicher zu schließen.
|
|
|
04/07/2014, 16:57
|
#7
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
|
Quote:
Originally Posted by Mostey
Da liegst du sicher nicht ganz falsch. Threads sind zwar Klassen, man implementiert dort aber keine Funktionen. Man nutzt eine Instanz dieser Klasse um eine Funktion auszuführen.
Sieht in C# folgendermaßen aus:
Code:
Thread t = new Thread(ThreadStart(somefunc));
t.Start();
public void somefunc()
{
throw NotImplementedException;
}
Nachdem das Ende von somefunc() erreicht wird, beendet sich in diesem Fall auch der Thread. Vielleicht wird dir ja jetzt klar, warum man das so nutzt.
|
Falsch, in Java leitet man von Thread ab und implementiert die run Methode. Diese wird aufgerufen, wenn der Thread gestartet wird.
Um noch ein bisschen klugzuscheißen: Die Klasse ist nur der Bauplan für den Thread. Der Thread ist ein Objekt.
Quote:
Originally Posted by Warnuk3r
Achso das heißt dass in einen Thread beziehungsweise die Klasse an sich keine Funktion rein kommt, außer die Run?
Das erklärt mir dann gleich alles vielen dank! Dachte da typisch an eine Klasse mit Funktionen dabei. So ergibt das ganze auch Sinn.
|
Doch, du kannst du viele Methoden schreiben wie du willst (du solltest es sogar; sonst wird die run Methode sehr unübersichtlich).
Was du suchst, ist threadübergreifende Kommunikation. Such einfach mal nach synchronized java.
Du kannst durchaus getter und setter threadsafe machen und so dem Thread Daten übergeben.
|
|
|
04/07/2014, 20:32
|
#8
|
elite*gold: 0
Join Date: Jan 2012
Posts: 759
Received Thanks: 416
|
 könnte für dich auch nützliche Klassen enthalten.
|
|
|
04/11/2014, 19:31
|
#9
|
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
|
Habs jetzt hinbekommen danke an alle.
|
|
|
Similar Threads
|
Loader Problem (in diesem Fall BCLoader)
04/29/2012 - Combat Arms - 1 Replies
Hallo Leute,
ich hätte da mal so ne frage an euch.
Unzwar hab ich ein Problem mit vielen Loadern.
Immer wenn ich sie starte kommt die Nachricht:
Wenn ich es als Admin ausführe kommt die selbe Nachricht.
Ich habe extra einen Ordner angelegt wo Firewall und Virenscaner nichts blocken, und die datei befindet sich dort drinne.
|
All times are GMT +1. The time now is 19:17.
|
|