Zadanie z wątków i implementacja klas

0

Posiadamy klase Sub implementującą interfejs SubInterface. Klasa ma obsługiwać wiele równoczesnych zadań, zgłaszanych do wykonania za pomocą metody jobSub.
Każde zgłoszone zadanie wymaga sekwencyjnego i wielokrotnego wykonania na nim metody oneIteration.
Liczbę wykonań metody oneIteration, dla danego zadania, można poznać za pomocą metody getNumberOfIterations. Zadanie mogą różnić się zwracaną liczbą wykonań oneIntration. Na pewno dla każdego zadania metodę oneIteration trzeba będzie wykonać co najmniej raz.

Zadaniem Państwa klasy jest także optymalizacja czasu wykonania powierzonych zadań w ramach dostępnych zasobów. Liczba wątków, którymi wolno się posługiwać, przesyłana jest do klasy Sub za pomocą metody setThreadsLimit - nie więcej niż podano wątków może jednocześnie wykonywać metody Iteration. Liczba wątków może być podawana asynchronicznie ze zgłaszaniem zadań do wyliczenia. Liczba wątków może ulec zmianie w dowolnej chwili. Nowa liczba wątków obliczeniowych powinna zostać uwzględniona w pracy systemu możliwie jak najszybciej - w przypadku zmniejszenia przydziału, oczywiście nie szybciej niż nastąpi zakończenie części realizowanych metod oneIteration.

public interface JobInterface {
/**
 * Zwraca liczbe wykonan metody oneIteration.
 * @return - liczba wykonan metody oneIteration
 */
	int getNumberOfIterations();
	
/**
 * Wykonuje jedna iteracje obliczen. Obliczenia
 * sa zalezne czasowo. Nie mozna wykonac metody
 * oneInteration przed zakonczeniem
 * poprzedniego wykonania.
 */
	void oneIteration();
}


public interface SubInterface {
	/**
	 * Metoda pozwala na przesylanie do wykonania zadanie.
	 * Zadanie to obiekt typu JobInterface. 
	 * @param ji - obiekt reprezentujacy zadanie do wykonania
	 */
	void jobSubmission( JobInterface ji );
	
	/**
	 * Podaje liczbe watkow, ktore moga byc jednoczesnie uzywane do obliczen.
	 * @param limit - liczba używanych do obliczeń wątkow.
	 */
	void setThreadsLimt( int limit );
}

Niestety nie było mnie zajęciach z powodu choroby, a nie chce korzystać z gotowców. Więc gdyby ktoś mi mógł udzielić kilka wskazówek dot. to byłbym bardzo wdzięczny :

1)Czy klasa S ma dziedziczyć z klasy Thread, czy mam stworzyć nad klasę NadS która dziedziczy z S i implementuje interfejs runnable.
2) I w którym momencie włączyć interfjes JobInterface .

0

To zależy jak to chcesz zaimplementować. Jak użyjesz jakieś ThreadPoolExecutor to możesz stworzyć klasę X implementujaca Runnable oraz JobInterface która w swoim "run" wywoła sobie w pętli to oneIteration tyle razy ile ma wykonać. I całe zadanie będzie miało moze z 10 linijek ;]

0

a miałby Pan jakąś mniej wysublimowany sposób ??

1 użytkowników online, w tym zalogowanych: 0, gości: 1