Ein kleines, einfaches Programm, das nach Schwachstellen abgesucht werden soll.
Bitte mal ein kurzes Feedback, ob ich auf dem richtigen Weg bin 🙂.
start() erfolgt ja bereits im Konstruktor, jedoch werden erst danach die Werte für mStart und mEnd gesetzt. Theroretisch ja nicht problematisch, da der Thread parallel laufen sollte. Gibt es nun jedoch eine Verzögerung des main-Threads und die Schleife wird ohne gesetzte Werte durchlaufen, so ist das Ergebnis 0. Ändern kann man dies, indem die start()-Methode erst nach dem Setzen in der Main-Methode aufgerufen wird.
Wie immer vielen Dank für die Hilfe!
Bitte mal ein kurzes Feedback, ob ich auf dem richtigen Weg bin 🙂.
start() erfolgt ja bereits im Konstruktor, jedoch werden erst danach die Werte für mStart und mEnd gesetzt. Theroretisch ja nicht problematisch, da der Thread parallel laufen sollte. Gibt es nun jedoch eine Verzögerung des main-Threads und die Schleife wird ohne gesetzte Werte durchlaufen, so ist das Ergebnis 0. Ändern kann man dies, indem die start()-Methode erst nach dem Setzen in der Main-Methode aufgerufen wird.
Wie immer vielen Dank für die Hilfe!
Java:
import java.util.concurrent.TimeUnit;
public class javaüben
{
private static class CSumTask extends Thread
{
private int mCount = 0;
private int mStart = 0;
private int mEnd = 0;
public CSumTask ( String name ) {
super ( name );
this . start () ;
}
public void setStartValue ( int value ) {
this . mStart = value ;
}
public void setEndValue ( int value ) {
this . mEnd = value ;
}
public int getSum () {
return this . mCount ;
}
@Override
public void run () {
for ( int i = this . mStart ; i <= this . mEnd ; i ++)
{
this . mCount += i ;
System.out.println(i);
}
}
}
public static void main ( String [] args )
throws InterruptedException
{
CSumTask task = new CSumTask (" Worker ") ;
TimeUnit.SECONDS.sleep(2);
task . setStartValue (1) ;
task . setEndValue (100) ;
//task.start(); lieber hier aufrufen!
task . join ();
System . out . println (" Wert " + task . getSum () );
}
}