Mam usługę executora, do którego przesyłam wiele wątków do wykonania jakiejś pracy, teraz chcę anulować/przerwać wykonywanie niektórych wątków, niech ja wiem, jak mogę to zrobić?Jak uzyskać wątek zgłoszony do usługi executer i przerwać ją w Javie
Na przykład: - Poniżej znajduje się moja klasa Thread, która drukuje nazwę nici po pewnym czasie bez końca.
public class MyThread implements Runnable {
String name;
public MyThread(String name) {
this.name = name;
}
@Override
public void run() {
try {
System.out.println("Thread "+ name + " is running");
sleep(500);
}catch (InterruptedException e){
System.out.println("got the interrupted signal");
e.printStackTrace();
}
}
}
teraz będę tworzyć wiele wątków, nadając im nazwy, tak że później mogę przerwać tego konkretnego wątku i zatrzymać jej wykonanie.
Teraz w mojej klasie test tworzę 4 wątki i chcą zatrzymać realizację 2 wątków nazwanych Amit i k.
public class ThreadTest {
public static void main(String[] args) {
ExecutorService executorService = Executors.newCachedThreadPool();
MyThread amit = new MyThread("amit");
MyThread k = new MyThread("k");
MyThread blr = new MyThread("blr");
MyThread india = new MyThread("india");
executorService.submit(amit);
executorService.submit(k);
executorService.submit(blr);
executorService.submit(india);
// now i want to stop the execution of thread Named "amit" and "k".
}
}
Daj mi znać, jak mogę to zrobić?
Podpowiedź: 'executorService.submit' zwraca wartość' Przyszłość > '. –
@AndyTurner, wiem, że daje "Przyszłość", ale czy możesz mi powiedzieć, w jaki sposób mogę użyć go w moim przypadku, aby pobrać wątki o nazwie 'amit' i przerwać jego wykonanie? –
Twój 'MyThread' nie musi przedłużać' Thread'. Wystarczy zaimplementować 'Runnable'. –