jedna duża pętla while czy wątki?

0

Od czego powinien zależeć wybór użycia pętli while lub wątków w Java?
Przykładowo mam program który obsługuje dwa rodzaje połączenia:
A do B
i B do C, oba mają działać jednocześnie. Czym warunkować ten wybór pomiędzy tymi dwoma technologiami.

0

Każda jest dobra, każda jest zła. Przy tak postawionym pytaniu odpowiedź może być tyko taka. Doprecyzuj.

0

No co mam doprecyzować? Nie wiem co jeszcze dopisać żeby było jaśniej

0

Jakie są to połączenia? Stanowe, bezstanowe. Czy utrzymujesz sesje czy wymagany jest streaming? Jaki rodzaj danych chcesz transmitować. Pliki, multimedia, obiekty, czy może tylko chcesz zdalnie wywoływać metody?
Jak będą nawiązywane i pomiędzy kim, a kim? Model p2p, client-server, client-client(czyli client-serwer z jednym klientem i jednym serwerem).
Jaką masz bazę technologiczną? Czy możesz postawić serwer EE, czy tylko prostego tomcata, a może musisz samodzielnie pisać własne rozwiązanie oparte o sockety?

0

stanowe. utrzymuje sesje. danych: ciąg znaków konkretnej długości. client -serwer.

0

Zazwyczaj takie rzeczy robi się jako rozwiązania wielowątkowe. Łatwiej jest je skalować i dopasowywać do konkretnych potrzeb.

0

a sa jakieś ogólne problemy z wątkami? np. obsługa błędów.

0

To zależy od konkretnego rozwiązania. Zazwyczaj jest tak, że program tworzy wątek nasłuchujący, a ten kolejne wątki do obsługo żądań w miarę potrzeb. Obsługa błędów jest znowuż wewnętrzną sprawą pomiędzy klientem, a serwerem. Jak się coś posypie to masz wiele różnych strategii obsługi. Od najprostszych czyli ubicia wątku, po bardzo skomplikowane związane z zapewnieniem transakcyjności.

0

bazując na tym przykładzie który podałem:
A łączy się z B (dwustronnie)
B łączy się z C (dwustronnie)
rozumiem że będę miał dwa wątki nasłuchujące: jeśli A coś napisze do B to pierwszy wątek to odbierze,jeśli zaś C coś napisze to wtedy drugi wątek to obsłuży. dobrze kombinuje?

0

Mniej więcej. B będzie zarówno klientem jak i serwerem. Nie myśl o tym jako o całości. Pomyśl o tym jak o całkowicie osobnych systemach. Będzie łatwiej.

0

No tak. zgadza się, dla pewnych żądań B będzie serwerem a dla innych będzie klientem. No na razie nie bardzo potrafię sobie to wyobrazić.... Bo to będzie ogólnie część większego projektu (nie na zaliczenie i nie za kase). do mnie i kolegi należy przygotowanie klasy connection która ma zapewniać łączność z tym obiektem "A" i "C"

0

Tak na szybko:

class A{
   Server b;
}
class B implements Server{
   Server c;
}
class C implements Server{
}

I to w dużym uproszczeniu. Server zależy od ciebie.

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