WCM - Das österreichische Computer Magazin Forenübersicht
 

Zurück   WCM Forum > Rat & Tat > Programmierung

Programmierung Rat & Tat für Programmierer

Microsoft KARRIERECAMPUS

 
 
Themen-Optionen Ansicht
Alt 08.11.2008, 23:33   #1
anve
Veteran
 
Registriert seit: 31.03.2006
Beiträge: 341


Standard Java: Synchronisierung von Threads

Hallo zusammen!

Ich möchte zwei Threads synchronisieren. Der eine Thread erhöht eine Variable, der zweite Thread dekrementiert sie. Ich mache das ganze ja mit "synchronized" Threadsicher. Aber irgendwie klappts nicht so ganz. Der zweite Thread wird gestartet obwohl der erste noch rennt.

Hier mal der Code:
Code:
class increase extends Thread{
    public synchronized void run(){
        System.out.println("Beginn increased 1");
        Global.number++;
        System.out.println(Global.number);
        try {
            increase.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("End increased");
    }
}
class decrease extends Thread{
    public synchronized void run(){
        System.out.println("Beginn decreased 1");
        Global.number--;
        System.out.println(Global.number);
        try {
            decrease.sleep(1000);
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.println("End decreased");
    }
}

public class test {

    /**
     * @param args
     */
    
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        increase thread_one = new increase();
        decrease thread_two = new decrease();
        
        System.out.println("Startwert: " + Global.number);
        thread_one.start();
        thread_two.start();
        System.out.println("Endwert: " + Global.number);
    }

}
Und hier meine globale Variable:
Code:
public class Global{
    public static int number=1;
}
Dabei werden die Threads nach dem ich am Ender der Main bin erst gestartet!? Hier die Ausgabe von mir:
Code:
Startwert: 1
Endwert: 1
Beginn increased 1
2
Beginn decreased 1
1
End increased
End decreased
Warum funktioniert die synchronized Methode nicht? Mir wurde gesagt, dass diese nur auf Objekte funktioniert. Aber ich hab kA wie das gehen sollte. Gibt es ein paar Java-Spezialisten unter euch?

LG
anve
anve ist offline   Mit Zitat antworten
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +2. Es ist jetzt 02:51 Uhr.


Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Forum SEO by Zoints
© 2009 FSL Verlag