Jak radzić sobie z wieloma wątkami w jednej klasie?
Tematy są często projektowane na dwa sposoby (zobacz tutoriale java): albo przez rozszerzenie klasy Thread, albo przez implementację klasy Runnable. Tak czy inaczej, musisz określić, co będzie działać w wątku.
Zaprojektowałem klasę, adapter do zasobu online, który pobiera różne rodzaje informacji. Ta klasa składa się z metod takich jak getInformationOfTypeA () i getInformationOfTypeB (). Oba zawierają kod do łączenia się z zasobami online, więc oba muszą być wątkowane, aby uniknąć zakleszczeń.
Pytanie brzmi: jak mam to zaprojektować? Mogę to zrobić jak poniżej, ale wtedy mogę zaimplementować tylko jedną metodę:
public class OnlineResourceAdapter implements Runnable {
public void run() {
//get stuff from resource
getInformationOfTypeA();
}
public static void main(String args[]) {
(new Thread(new OnlineResourceAdapter ())).start();
}
public void getInformationOfTypeA(){
//get information of type A
}
public void getInformationOfTypeB(){
//get information of type B
}
}
Innym sposobem byłoby stworzenie oddzielnych klas dla każdej metody, ale wydaje mi się to nienaturalne.
Btw: Rozwijam swoją aplikację w j2me
AKTUALIZACJA:
Dzięki twoim odpowiedziom myślę, że najbardziej nadaje się do użycia czegoś takiego, jak poniżej:
Co o tym sądzisz:
public class OnlineResourceAdapter{
public void getInformationOfTypeA(){
Thread t = new Thread(new Runnable() {
public void run() {
//do stuff here
}
});
t.start();
}
public void getInformationOfTypeB(){
Thread t = new Thread(new Runnable() {
public void run() {
//do stuff here
}
});
t.start();
}
}
Co o tym sądzisz?