Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > Java
You last visited: Today at 19:16

  • Please register to post and access all features, it's quick, easy and FREE!

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.

Reply
 
Old   #1
 
Warnuk3r's Avatar
 
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?
Warnuk3r is offline  
Old 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 View Post
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.
Mostey is offline  
Thanks
1 User
Old 04/05/2014, 23:21   #3
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
Quote:
Originally Posted by Mostey View Post
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
Warnuk3r is offline  
Old 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 View Post
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.
Mostey is offline  
Thanks
1 User
Old 04/06/2014, 00:00   #5
 
Warnuk3r's Avatar
 
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.
Warnuk3r is offline  
Old 04/06/2014, 14:15   #6
 
XxharCs's Avatar
 
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.
XxharCs is offline  
Thanks
1 User
Old 04/07/2014, 16:57   #7


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Quote:
Originally Posted by Mostey View Post
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 View Post
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.
MrSm!th is offline  
Thanks
3 Users
Old 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.
dowhile is offline  
Old 04/11/2014, 19:31   #9
 
Warnuk3r's Avatar
 
elite*gold: 307
Join Date: Jul 2009
Posts: 1,091
Received Thanks: 434
Habs jetzt hinbekommen danke an alle.
Warnuk3r is offline  
Reply


Similar Threads 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.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.