Napisz program, który oblicza kwadrat długości wektora $v$ (czyli sumę kwadratów
jego współrzędnych)
\[
S = \sum \limits _{i = 0}^{n-1} v_i^2
\]
Liczba współrzędnych wektora, $n$, jest bardzo duża ($n \gt 1000000$), dlatego w
celu przyspieszenia obliczeń wektor dzielimy na $k$ części (można założyć, że
$n$ jest podzielne przez $k$). Każdy z $k$ wątków programu (elementów typu
Runnable) oblicza sumę dla odpowiadającej mu części wektora (o
długości $n / k$). Wyniki częściowe zwrócone przez wątki są następnie sumowane i
całkowita suma wypisana na standardowe wyjście. Program powinien również wypisać
sumy wyznaczone przez poszczególne wątki.
Wartości współrzędnych wektora są generowane losowo z przedziału $(-5,\, 5)$.
Napisz program tworzący N wątków. Wartość N
jest podana w linii komend (wartością domyślną N jest 2). Każdy
wątek 5 razy generuje liczbę losową, K, z przedziału [100,
1000) i wypisuje na ekran swoją nazwę oraz wartość K. Po
wypisaniu tego komunikatu wątek zasypia na K milisekund. Każdy
wątek dodatkowo sumuje wygenerowane wartości K. Po wypisaniu
wszystkich komunikatów wątek wypisuje komunikat końcowy, zawierający nazwę i
sumę wygenerowanych liczb. Po zakończeniu wszystkich wątków program główny
wypisuje tekst "Testcase completed" oraz sumę cząstkowych wartości przekazanych
przez wątki.
Przykładowy wynik działania programu:
Thread-0: 709
Thread-1: 287
Thread-1: 296
Thread-1: 431
Thread-0: 927
Thread-1: 550
Thread-1: 551
Thread-0: 200
Thread-0: 381
Thread-1: ended with sum 2115
Thread-0: 506
Thread-0: ended with sum 2723
Testcase completed, the sum is 4838