Hallo,
ich weiss nicht so recht ob ich folgende Aufgabe richtig verstanden/implementiert habe:
"Schreiben Sie ein Programm, dass mit 100 Threads gleichzeitig bis 100 zählt. Verwenden Sie hierfür die untenstehende Klasse "Counter". Zur Implementierung der Zugriffsbeschränkung auf die gemeinsame Variable nehmen Sie bitte das aus der Vorlesung bekannte Monitor-Konzept(Stichwort synchronized)"
Die Methode „increase()“ soll zusätzlich zu dem Hochzählen der Varibale „count“ den Zählerstand und den Thread, der die Methode aufgerufen hat, ausgeben.
Ich habs folgendermaßen implementiert:
Klasse: Counter
ThreadKlasse
Main
ich weiss nicht so recht ob ich folgende Aufgabe richtig verstanden/implementiert habe:
"Schreiben Sie ein Programm, dass mit 100 Threads gleichzeitig bis 100 zählt. Verwenden Sie hierfür die untenstehende Klasse "Counter". Zur Implementierung der Zugriffsbeschränkung auf die gemeinsame Variable nehmen Sie bitte das aus der Vorlesung bekannte Monitor-Konzept(Stichwort synchronized)"
Die Methode „increase()“ soll zusätzlich zu dem Hochzählen der Varibale „count“ den Zählerstand und den Thread, der die Methode aufgerufen hat, ausgeben.
Ich habs folgendermaßen implementiert:
Klasse: Counter
Java:
public class Counter {
private int count =0;
//Methode zum Hochzählen der Variabeln Count, sowie Ausgabe des akt. Threads
public void increase(){
this.count++;
System.out.println(Thread.currentThread().getName() +" "+ this.count);
}
//Getter,Setter
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
}
ThreadKlasse
Java:
public class ThreadClass extends Thread{
private int end;//Soweit soll der jeweilige Thread hochzählen
private Counter counter = new Counter();
//Konstruktor
public ThreadClass(int end){
this.end=end;
}
//Run-Methode
public void run(){
hochzählen();
}
public void hochzählen(){
for(int i=0; i<this.end; i++){
synchronized(this.counter){
this.counter.increase();
if(i==this.end-1){
System.out.println(Thread.currentThread().getName()+" ist fertig");
}
}
}
}
//Getter,Setter
public int getEnd() {
return end;
}
public void setEnd(int end) {
this.end = end;
}
Main
Java:
public static void main(String[] args) {
//In einer For-Schleife mit 100 Threads auf 100 zählen
for(int i=0; i<100; i++){
ThreadClass t1 = new ThreadClass(100);
t1.start();
}
}