Verzweiflung wegen Berechnung mit Multithreading

kilopack15

Aktives Mitglied
Hallo Leute,
ich habe ein Problem mit Threads. Ja ich weiß viel Text, aber das Problem ist sicher trivial. Habe euch unten meine ProblemKlasse angehangen, die ich verständlich kommentiert habe. Hier schildere ich euch meine AUfgabe und mein Problem.

Meine Aufgabe: Ich soll die Werte einer bestimmten Matrix berechnen. Dazu soll ich mir 4 Threads zur Hilfe holen, die sich jeweils immer um die Berechnung eines bestimmten Viertels der Matrix kümmern. Dafür stehen die Methoden obenrechts(), obenlinks(), untenrechts(), untenlinks().

Das ganze soll folgendermaßen ablaufen: jeder Thread rechnet sein Viertel aus. In einem der Threads (Hauptthread) werden dann die Ergebnisse zusammengefügt und es wird entschieden ob die Ergebnisse hinreichend genau sind. Wenn ja, wird abgebrochen, wenn nein müssen die Threads durch die Anweisung matrix.nextIteration(); nochmal ihre jeweiligen Methoden berechnen.
Falls einer der Threads etwas langsamer ist, müssen die anderen derweil auf ihn warten. Das habe ich dann mit wait() und notify() gemacht.

Ich habe dazu eine Klasse geschrieben, die aber nicht funktioniert. Es wird eine IllegalMonitorStateException geworfen. Was habe ich mit den Threads falsch gemacht? Bin mir sicher dass ich zb eine Methode falsch angewendet habe. Könnt ihr mir bitte helfen?
Hier meine bisherige, falsche Lösung:
Java:
         //Erstellen der Threads
        Hauptthread tol = new Hauptthread();   
        ThreadOR tor = new ThreadOR();   
        ThreadUR tur = new ThreadUR();   
        ThreadUL tul = new ThreadUL();   

        class Hauptthread extends Thread{

            public synchronized void run(){
                while(abbruch==false){  //Während das Abbruchkriterum nicht erfüllt ist...
                obenlinks();        //Thread berechnet seinen Teil der Matrix
               
                /*Hier soll der Thread dreimal auf die Ergebnisse 
                der drei anderen Threads warten. Jeder der anderen Threads 
                benachrichtigt nämlich diesen Hauptthread hier, nachdem er seine Methode                             berechnet hat
                 * */
                
                try {    
                    wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                try {
                    wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                try {
                    wait();
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                if(Abbruchkriterium == true){ //dann wird abgebrochen
                    abbruch = true;
                    tor.interrupt();   //Threads werden nicht mehr gebraucht
                    tol.interrupt();
                    tur.interrupt();
                    tul.interrupt();
                   
                }else{   //Falls nicht abgebrochen werden soll
                    matrix.nextIteration();  //refreshen der Matrix
                    notifyAll();  //die anderen Threads werden geweckt und sollen nochmal rechnen
                }
                }
            }   
        }
          
       
        class ThreadOR extends Thread{
                public synchronized void run(){
                    while(true){
                    obenrechts();
                    tol.notify();        //Der Hauptthhread (oben) wird benachrichtigt, sobald                                                            ThreadOR mit seiner Methode fertig ist
                    try {
                        wait();   //Thread wartet, ob er weitermachen soll (erfüllt wenn im                                                         Hauptthread notifyALL() erreicht wird
                    } catch (InterruptedException e1) {
                        e1.printStackTrace();
                    }
                    }
            }
        }
       
        class ThreadUR extends Thread{
             //gleich aufgebaut wie ThreadUL
        }
       
       
        class ThreadUL extends Thread{
              //gleich aufgebaut wie ThreadUL
        }

        public void solve() { //Methode startet Threads
            tol.start(); //Starten der Threads
            tor.start();
            tur.start();
            tul.start();
            try { 
                tol.join();  //warten bis der Hauptthread fertig ist
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
       

       
    }
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Array Verzweiflung Java Basics - Anfänger-Themen 7
J Wie mit Datenbank verbinden, z.B. DB2? VERZWEIFLUNG PUR! Java Basics - Anfänger-Themen 15
J Verzweiflung bei ArrayList.set()-Funktion Java Basics - Anfänger-Themen 4
M Totale Verzweiflung bei Installation von Java Java Basics - Anfänger-Themen 9
P Absolute Verzweiflung: Linux + Java + CLASSPATH Java Basics - Anfänger-Themen 8
pkm Frage wegen möglichem grouping-hack Java Basics - Anfänger-Themen 22
I Verständnis Frage wegen einer Aufgabe Java Basics - Anfänger-Themen 10
R NullPointerException wegen JPanel oder doch nicht ? Java Basics - Anfänger-Themen 7
S Oberfläche aktualisiert nicht wegen sleep Java Basics - Anfänger-Themen 1
M Benötige Hilfe wegen Problem Java Basics - Anfänger-Themen 4
A Frage wegen Chatbefehlen... Java Basics - Anfänger-Themen 13
R Problem mit Javaaufgabe wegen Wurzel Java Basics - Anfänger-Themen 7
C Stringeingabe: kein Satz wegen Leerzeichen möglich Java Basics - Anfänger-Themen 3
StupidAttack Wegen ArrayLisyt erwirrt... Java Basics - Anfänger-Themen 11
G Prüfen ob array[1] existiert wegen OutofBounds! Java Basics - Anfänger-Themen 4
B Exception bei ImageIO wegen sonderzeichen Java Basics - Anfänger-Themen 11
I Frage wegen Wörterbuch Programmierung Java Basics - Anfänger-Themen 13
0x7F800000 getParameter in doPost() funktioniert nicht wegen enctype? Java Basics - Anfänger-Themen 11
G Frage wegen Applet( Linie) Java Basics - Anfänger-Themen 2
K Frage Wegen Binomialkoeffizienten Java Basics - Anfänger-Themen 28
G Frage wegen Quadratische Gleichung Java Basics - Anfänger-Themen 9
G error wegen heap space Java Basics - Anfänger-Themen 4
K Frage wegen Mittelwert Java Basics - Anfänger-Themen 32
S Jcombobox und 2maliges anzeigen wegen ItemStateChanged? Java Basics - Anfänger-Themen 3
A 2D Array mit fehler wegen inkompatiblem typ? Java Basics - Anfänger-Themen 5
G Warum das Prog mehrmals das gleiche macht wegen ItemListener Java Basics - Anfänger-Themen 4
L NullpointerException wegen wahrscheinlichem Multithreading Java Basics - Anfänger-Themen 4
R eine frage wegen methoden und if statments Java Basics - Anfänger-Themen 6
zilti Java motzt wegen Exceptions Java Basics - Anfänger-Themen 5
L Wegen TableSorter wird falsche Zeile einer Tabelle gelöscht? Java Basics - Anfänger-Themen 2
F Kopiren aber zugriff verweigert wegen schreibschutz Java Basics - Anfänger-Themen 3
S ich stör schon widr wegen meine gui Java Basics - Anfänger-Themen 2
T Frage wegen UNI Aufgabe Java Basics - Anfänger-Themen 4
R Frage wegen Vererbung Java Basics - Anfänger-Themen 5
R 2 Fragen wegen File Java Basics - Anfänger-Themen 14
I File Uploader... Statusanzeige, Berechnung des Status etc. Java Basics - Anfänger-Themen 0
Bugs Bunny Fehlerhafte Berechnung beim erneuten Durchlaufen der Schleife Java Basics - Anfänger-Themen 5
Jamie logische Verknüpfung zur Schaltjahr-Berechnung Java Basics - Anfänger-Themen 30
Stephan_kl Reihenwert-Berechnung, Ergebnis mit vorherigem Ergebnis vergleichen Java Basics - Anfänger-Themen 11
Abraham42 Berechnung der Kühlung Java Java Basics - Anfänger-Themen 12
S Hashcode-Berechnung + ^ Java Basics - Anfänger-Themen 2
J Median-Berechnung von 2D-Teilarrays Java Basics - Anfänger-Themen 56
F Tabelle - Berechnung Rang Java Basics - Anfänger-Themen 2
B Berechnung der Position von Kinderelemente von einem Elternknoten Java Basics - Anfänger-Themen 23
S Berechnung der sleep time ist falsch Java Basics - Anfänger-Themen 46
S Switch-Case zur Berechnung der Einkommensteuer Java Basics - Anfänger-Themen 15
F Berechnung der Rektaszension und Deklination eines Sterns Java Basics - Anfänger-Themen 7
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
V Erste Schritte Pi Berechnung Java Basics - Anfänger-Themen 47
M Berechnung der Reststrecke bei Graphen Java Basics - Anfänger-Themen 1
V Algorithmus zur fortlaufenden Berechnung des duechscjnt Java Basics - Anfänger-Themen 1
B Berechnung zu einer Schleife formen Java Basics - Anfänger-Themen 6
B Berechnung Median mit Methode Java Basics - Anfänger-Themen 7
CptK Methoden Berechnung von Anfangsgeschwindigkeit und Winkel Java Basics - Anfänger-Themen 27
K Erste Schritte Berechnung der Summe zweier Arrays Java Basics - Anfänger-Themen 15
S Erste Schritte Berechnung des Paketportos - Problem/Frage Java Basics - Anfänger-Themen 52
J Gleitkommazahlen, Berechnung von pi Java Basics - Anfänger-Themen 4
J Berechnung liefert falsches Ergebnis Java Basics - Anfänger-Themen 2
A Die Werte zur Berechnung müssen als Parameter übergeben werden? Java Basics - Anfänger-Themen 7
Salo Berechnung von Winkeln Java Basics - Anfänger-Themen 28
M Restbuchwert Berechnung geht nicht Java Basics - Anfänger-Themen 45
Ghostman1711 Pi berechnung Methode aufrufen Java Basics - Anfänger-Themen 2
L Rekursive Methode zur Berechnung der Potenz q hoch p Java Basics - Anfänger-Themen 17
beatles Operatoren Operatoren - Berechnung Java Basics - Anfänger-Themen 40
K Best Practice Algorithmus für Berechnung von Zahlenreihenfolge Java Basics - Anfänger-Themen 12
N Verzögerte Berechnung "Lazy" Java Basics - Anfänger-Themen 8
J Erste Schritte Rundungsproblem - Berechnung Notendurchschnitt Java Basics - Anfänger-Themen 13
S Variablen Vektor zur Berechnung verwenden Java Basics - Anfänger-Themen 4
T Java double berechnung fehler Java Basics - Anfänger-Themen 2
M Berechnung in Java Java Basics - Anfänger-Themen 4
S Berechnung der Arbeitstage in einem Zeitraum Java Basics - Anfänger-Themen 9
E Problem bei rekursiver Berechnung des Binomialkoeffizienten Java Basics - Anfänger-Themen 5
T Iterative Pi Berechnung in Rekursive Java Basics - Anfänger-Themen 2
S Double, int, Berechnung Java Basics - Anfänger-Themen 3
C Nach Berechnung runden und Wert ausgeben Java Basics - Anfänger-Themen 7
E Berechnung für Shop einbinden Java Basics - Anfänger-Themen 8
S Klassen Formel zur Berechnung .... Bitte um Hilfe Java Basics - Anfänger-Themen 7
S Euklid Algorithmus zur Berechnung des GGTs Java Basics - Anfänger-Themen 2
OnDemand Berechnung in die start und paint Methode eines Applets Java Basics - Anfänger-Themen 28
P Schleife zur Berechnung von einer Summe Java Basics - Anfänger-Themen 16
F Berechnung einer linearen Abschreibung Java Basics - Anfänger-Themen 5
E Berechnung von Punkten Java Basics - Anfänger-Themen 4
D Berechnung des Abstandes von zwei Punkten in einem Koordinatensystem Java Basics - Anfänger-Themen 14
A Methoden PI-Berechnung Java Basics - Anfänger-Themen 22
S Erste Schritte Berechnung mit Daten aus CSV und Date Objekt Java Basics - Anfänger-Themen 2
C Programm zur Berechnung der Spur einer Matrix Java Basics - Anfänger-Themen 4
P Pythagoras Baum - Berechnung der Punkte Java Basics - Anfänger-Themen 9
A Erste Schritte Steuer Berechnung, Alters Abhängig Java Basics - Anfänger-Themen 5
T Erste Schritte Berechnung von gerade und ungerade Zahlen Java Basics - Anfänger-Themen 10
J Erste Schritte Berechnung Ratten vermehrung Java Basics - Anfänger-Themen 4
P falsches ergebnis bei einfacher berechnung Java Basics - Anfänger-Themen 3
T Iterative Berechnung einer Satellitenbahn Java Basics - Anfänger-Themen 20
M Java Berechnung mit mehreren Lösungen? Java Basics - Anfänger-Themen 9
D Nullstellen-Berechnung Java Basics - Anfänger-Themen 10
L Fehlermeldung bei falscher Berechnung anzeigen Java Basics - Anfänger-Themen 31
A berechnung multiplikatives inverses Java Basics - Anfänger-Themen 5
J Berechnung des aktuellen Alters auf Basis des Geburtstags Java Basics - Anfänger-Themen 45
J Datentypen Fehler bei Berechnung mit Double und Int-Werten Java Basics - Anfänger-Themen 22
G Berechnung von Winkeln mit Cosinussatz Java Basics - Anfänger-Themen 2
B Arrays verwenden für Berechnung Java Basics - Anfänger-Themen 3

Ähnliche Java Themen

Neue Themen


Oben