Wątki i uzyskiwanie danych z klasy

0

Witam,

mam problem ze zrobieniem pewnego loadera w aplikacji.

Opiszę o co mi chodzi na prostym przykładzie:

Mam klasy A i B, oraz obiekt klasy B o nazwie test (początkowo null).
W obiekcie klasy A uruchamiam wątek1, który:
1.1. uruchamia wątek2,
1.2. do momentu uzyskania pewnej zmiennej odczytuje z obiektu 'test' informacje dotyczące % załadowania całego obiektu (z pewnym odstępem czasu, np. 100ms).

Wątek2:
2.1. Wykonuje tylko jedną linijkę kodu test = new B();

Jak nie trudno się domyślić, w punkcie 1.2 obiekt test będzie nullem, aż do momentu w którym wykona się new...

Pytanie: w jaki szybki i wydajny sposób poradzić sobie z przesłaniem zmiennej.
Jest możliwość przekazania this'a klasy A do konstruktora B, ale czy nie jest to zbyt powolne?

Pozdrawiam,
Michał

0

Nie bardzo rozumiem po co w ogóle ten wątek2. Czemu po prostu wątek1 nie stworzy obiektu B a później bawi się w odczytywanie czegoś z niego.
o_O

0

Tylko i wyłącznie dlatego, że jest to loader, który chciałbym, aby na bieżąco pokazywał procent załadowania obiektu.

W rozwiązaniu takim jak opisałeś powyżej niestety nie jestem w stanie zrobić czegoś takiego.

0

A mnie się jednak wydaje że źle to napisałeś i tyle. Czemu niby tworzenie nowego obiektu w jakiejś pętli miałoby mieć związek z odczytywaniem postępu ładowania jakiegoś pliku? o_O WTF? Gdzie tu jakis sens i logika?
Zresztą takie pullowanie danych jest słabe. Zrób tak:

  • Masz obiekt prezentujący postęp ładowania pliku (twoje A), ale nie jest żadnym wątkiem. Ma za to metodę która pozwala na update stanu wczytywania.
  • Wątek zajmujący się sprawdzaniem ile pliku się już wczytało (twoje B) i jak się coś wczyta to wywołuje na A metodę update() z nową wartością.

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