Problem z dostępem to obiektu w innym wątku.

0

Witam, mój problem jest następujący. W wątku głównym mam całe GUI aplikacji, mam też klasę core która jest logiką biznesową aplikacji, klasa core zawiera także inne klasa, miedzy innymi do obsługi bazy danych. Chciałbym klasę core uruchomić w innym wątku. Robię to w następujący sposób.

coreThread = new Thread(core);//core implementuje interface Runnable
coreThread.setDaemon(true);//chce żeby wątek nie kończył się po wykonaniu metody run();
//tylko czekał na żądania
coreThread.start();//uruchamiamy wątek. metodę run(); mam pustą gdyż nie chce jeszcze nic robić z wątkiem tylko ma
// czekać na żądanie.
//Dlaczego nie mogę uzyskać dostępu do metod w mojej klasie w ten sposób: 
coreThread.MojaMetoda();
1

Oznaczenie wątku jako demona nie oznacza, że będzie on istniał w nieskończoność nawet po zakończeniu run(). W 'normalnym' przypadku aplikacja nie zostanie zakończona jeżeli są jeszcze jakieś działające wątki, oznaczenie wątku jako demona pozwala JVM na zakończenie programu jeżeli wątki demony wciąż żyją.

Inna sprawa, że próbujesz wywołać coreThread.MojaMetoda(); czyli metodę klasy Thread podczas gdy powinieneś zdaje się wołać core.MojaMetoda(); bo to core jest obiektem Twojej klasy.

1

Patrząc na naturę problemu, zalecam poczytanie na temat wątków na stronie SUN- brak znajomości podstaw współbieżności raczej nie uniemożliwi Ci napisanie czegokolwiek działającego na więcej niż głównym wątku (jak sam widzisz)

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