Mój problem to zdeklarowanie metody run() w klasie Letters (ta klasa ma służyć do równoległego uruchamiania kodów, które będą wypisywały co jakiś czas określone litery). Oczekiwany efekt ma wyglądać tak:
Wątek A
Wątek B
Wątek C
Wątek D
BDACADCBADCBBCDABCDA
Program skończył działanie
Klasa Main:
public class Main {
public static void main(String[] args) throws InterruptedException {
Letters letters = new Letters("ABCD");
for (Thread t : letters.getThreads()) System.out.println(t.getName());
for (Thread t : letters.getThreads()) t.start();
Thread.sleep(5000);
for (Thread t : letters.getThreads()) t.interrupt();
System.out.println("\nProgram skończył działanie");
}
}
W klasie Letters mam coś takiego:
import java.util.ArrayList;
public class Letters extends Thread {
ArrayList<Thread> listaWatkow = new ArrayList<Thread>();
public Letters (String m) {
for (int i = 0; i < m.length(); i++) {
String litera;
litera = m.substring(i, i+1);
listaWatkow.add(new Thread ("Wątek " + litera));
}
}
public void run() {
while (!Thread.interrupted()) {
try {
????????
}
catch (Exception exc) {
return;
}
}
}
public ArrayList<Thread> getThreads() {
return listaWatkow;
}
}
Czy jest jakiś inny sposób zakończenia wątków wypisujących litery niż przez metodę interrupt()?