Witajcie, Mam za zadanie obliczyć histogram pewnej tablicy za pomocą wątków. Postanowiłem, że podzielę tablicę na dwie połowy - pierwszy wątek będzie przeszukiwał pierwszą część, a drugi drugą.
public class MyThread extends Thread
{
private byte [] tab; // tablica wejsciowa
private int [] tab2; // tablica wyjsciowa, przechowujaca histogram
int suma = 0;
public MyThread(byte []y, int []x)
{
this.tab = y;
this.tab2 = x;
}
@Override
public void run()
{
for (int j = -128; j < 128; j++)
{
for (int i = 0; i < tab.length; i++)
{
if (tab[i] == j)
{
tab2[j + 128] += 1;
}
}
}
for (int i = 0; i<tab2.length; i++)
{
System.out.println(tab2[i]);
}
}
}
Chciałbym metodzie Main, albo w jakiejkolwiek innej klasie dostać się do pola tablicy tab2. Na przykład tab2[1], tab2[2] bez wywoływania metody run. Kiedy w metodzie main wykonam np coś takiego:
byte[] w ;
int [] histogram = new int[256];
byte [] first ;
byte [] second ;
w = Files.readAllBytes(path);
first = Arrays.copyOfRange(w, 1, w.length/2);
second = Arrays.copyOfRange(w, w.length/2, w.length);
MyThread t1 = new MyThread(first, histogram);
MyThread t2 = new MyThread(second, histogram);
t1.start();
t2.start();
System.out.println("*************" + histogram[1]); // chodzi mi o "dostanie" sie do tej wartosci, by nie zwracala zera
Otrzymuję wartość "0" dla każdego elementu tablicy histogram. W jaki sposób mogę dostać się do elementu zawierającego tę wartość nie wywołując metody run? Próbowałem dostać się za pomocą geta czy poprzez publiczny modyfikator tej tablicy, ale bez skutku... Z góry dzięki za pomoc.