Opis zlecenia
Zadanie polega na współbieżnym przeszukiwaniu dwuwymiarowej tablicy liczb całkowitych w celu znalezienia sąsiednich par komórek, których wartości sumują się do określonej liczby \(X\). Po znalezieniu takiej pary program ma wpisać \(0\) w miejsce wartości tych komórek, jednocześnie rejestrując ich pozycje.
### Kluczowe wymagania:
1. *Współbieżność*:
- Kilka wątków do odczytu, jeden wątek do zapisu.
- Wątki odczytujące muszą działać równocześnie, przetwarzając różne obszary tablicy.
- Wątek zapisujący działa wyłącznie, gdy są dostępne dane do modyfikacji.
2. *Reguły działania*:
- Nie można czytać tej samej pozycji wielokrotnie.
- Operacje odczytu i zapisu nie mogą kolidować na tych samych pozycjach.
- Przetwarzanie musi odbywać się na bieżąco – znalezione pary muszą być natychmiast zastępowane zerami.
3. *Struktura i wynik*:
- Program musi równomiernie rozłożyć obciążenie między wątki.
- Praca wątków ma rozpocząć się po wywołaniu metody start .
- Wynik (zbiory par pozycji) musi być dostępny po zakończeniu pracy wątków.
- Po zwróceniu wyniku program nie może wykonywać żadnych operacji na tablicy.
4. *Dodatkowe warunki*:
- Startowe pozycje dla wątków będą oddalone od siebie.
- Gwarantowane jest istnienie co najmniej jednej poprawnej pary pozycji.
Rozwiązanie należy zaimplementować w klasie ParallelExplorer , która ma implementować interfejs Explorer .