A
asdfwer
Gast
Hallo,
ich habe mal eine kurze Frage zu folgendem Code:
[JAVA=42]
package test;
import java.lang.Thread;
public class Main{
private int i=0;
private static int plus=0;
private static int minus=0;
class t extends Thread{
public synchronized void inc(){
/*if(i>=100){
try{wait();}
catch(Exception e){e.printStackTrace();}
}*/
++i;
++plus;
//notify();
//System.out.println(i);
System.out.println("Plus: "+plus+", Minus: "+minus);
}
public synchronized void dec(){
/*if(i<=0){
try{wait();}
catch(Exception e){e.printStackTrace();}
}*/
--i;
++minus;
//notify();
//System.out.println(i);
System.out.println("Plus: "+plus+", Minus: "+minus);
}
}
public static void main(String[] args){
//final Main m = new Main();
new Main().new t(){
public void run(){
while(true){
dec();
}
}
}.start();
new Main().new t(){
public void run(){
while(true){
inc();
}
}
}.start();
}
}
[/code]
Bitte die Kommentare nicht beachten
Meine Frage ist nun, warum ich eine andere Ausgabe bekommen, wenn ich die int-Variablen "plus" und "minus" nicht als static vereinbare?
Beide Threads müssten doch auf den Membervariablen der Klasse "Main" arbeiten oder nicht?
Gruß und frohen Feierntag an alle
ich habe mal eine kurze Frage zu folgendem Code:
[JAVA=42]
package test;
import java.lang.Thread;
public class Main{
private int i=0;
private static int plus=0;
private static int minus=0;
class t extends Thread{
public synchronized void inc(){
/*if(i>=100){
try{wait();}
catch(Exception e){e.printStackTrace();}
}*/
++i;
++plus;
//notify();
//System.out.println(i);
System.out.println("Plus: "+plus+", Minus: "+minus);
}
public synchronized void dec(){
/*if(i<=0){
try{wait();}
catch(Exception e){e.printStackTrace();}
}*/
--i;
++minus;
//notify();
//System.out.println(i);
System.out.println("Plus: "+plus+", Minus: "+minus);
}
}
public static void main(String[] args){
//final Main m = new Main();
new Main().new t(){
public void run(){
while(true){
dec();
}
}
}.start();
new Main().new t(){
public void run(){
while(true){
inc();
}
}
}.start();
}
}
[/code]
Bitte die Kommentare nicht beachten
Meine Frage ist nun, warum ich eine andere Ausgabe bekommen, wenn ich die int-Variablen "plus" und "minus" nicht als static vereinbare?
Beide Threads müssten doch auf den Membervariablen der Klasse "Main" arbeiten oder nicht?
Gruß und frohen Feierntag an alle