Guten Tag,
ich schreibe gerade ein Programm, welches das Vorkommen des Wertes 3 in einem int Array zählen soll. Dies soll so erfolgen, dass ein Array der länge n (Eingabewert) mit Zufallszahlen gefüllt wird und dann das Vorkommen des Wertes 3 auf k (Eingabewert) Threads berechnet wird. Zusätzlich soll von einem weiteren Thread (PrintThread) immer wenn der counter sich um 100 erhöht hat eine Systemausgabe kommen sowie am Ende von diesem Thread das Gesamtergebnis. Mein Problem ist, dass ich nicht genau weiß, wie ich den Counter zwischen allen Threads "gleich" halte, sodass diese gegenseitig auf denselben Wert zugreifen und wie ich diesen dann an die PrintThread übergebe.
[CODE lang="java" title="CountNumbers (main Methode)"]public class CountNumbers {
public static void main(String[] args) {
final int counter = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Geben Sie n ein: ");
int n = sc.nextInt();
System.out.print("Geben Sie k ein: ");
int k = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; ++i) {
a = (int) (Math.random() * 10);
}
for (int i = 0; i < k; ++i) {
Thread CountThread = new CountThread(k, i, n, a);
CountThread.start();
}
}
}[/CODE]
[CODE lang="java" title="CountThread"]public class CountThread extends Thread{
int counter, k,i,n;
int[] a;
CountThread (int k, int i, int n, int[] a) {
this.k = k;
this.i = i;
this.n = n;
this.a = a;
}
public int getCounter() {
return counter;
}
public void run() {
for (int f = i; f < a.length; f += k) {
if (a[f] == 3) {
counter++;
}
}
}
}[/CODE]
[CODE lang="java" title="PrintThread"]public class PrintThread extends Thread{
int counter;
public void run() {
//while Schleife? Währen die anderen Threads noch laufen
if (counter % 100 == 0 ) {
System.out.println(counter + "Vorkommen bisher gefunden!");
}
//Wenn die anderen Threads fertig sind
System.out.println("Gesamtvorkommen: " + counter);
}
}[/CODE]
ich schreibe gerade ein Programm, welches das Vorkommen des Wertes 3 in einem int Array zählen soll. Dies soll so erfolgen, dass ein Array der länge n (Eingabewert) mit Zufallszahlen gefüllt wird und dann das Vorkommen des Wertes 3 auf k (Eingabewert) Threads berechnet wird. Zusätzlich soll von einem weiteren Thread (PrintThread) immer wenn der counter sich um 100 erhöht hat eine Systemausgabe kommen sowie am Ende von diesem Thread das Gesamtergebnis. Mein Problem ist, dass ich nicht genau weiß, wie ich den Counter zwischen allen Threads "gleich" halte, sodass diese gegenseitig auf denselben Wert zugreifen und wie ich diesen dann an die PrintThread übergebe.
[CODE lang="java" title="CountNumbers (main Methode)"]public class CountNumbers {
public static void main(String[] args) {
final int counter = 0;
Scanner sc = new Scanner(System.in);
System.out.print("Geben Sie n ein: ");
int n = sc.nextInt();
System.out.print("Geben Sie k ein: ");
int k = sc.nextInt();
int[] a = new int[n];
for (int i = 0; i < n; ++i) {
a = (int) (Math.random() * 10);
}
for (int i = 0; i < k; ++i) {
Thread CountThread = new CountThread(k, i, n, a);
CountThread.start();
}
}
}[/CODE]
[CODE lang="java" title="CountThread"]public class CountThread extends Thread{
int counter, k,i,n;
int[] a;
CountThread (int k, int i, int n, int[] a) {
this.k = k;
this.i = i;
this.n = n;
this.a = a;
}
public int getCounter() {
return counter;
}
public void run() {
for (int f = i; f < a.length; f += k) {
if (a[f] == 3) {
counter++;
}
}
}
}[/CODE]
[CODE lang="java" title="PrintThread"]public class PrintThread extends Thread{
int counter;
public void run() {
//while Schleife? Währen die anderen Threads noch laufen
if (counter % 100 == 0 ) {
System.out.println(counter + "Vorkommen bisher gefunden!");
}
//Wenn die anderen Threads fertig sind
System.out.println("Gesamtvorkommen: " + counter);
}
}[/CODE]