To jest dla ogólnej koncepcji, a nie dla Androida
Zazwyczaj każdy z użytkowników wysyła żądanie HTTP dotyczące strony. Serwer odbiera żądania i deleguje je do różnych pracowników (procesów lub wątków).
W zależności od podanego adresu URL, serwer odczytuje plik i odsyła go z powrotem do użytkownika. Jeśli plik jest plikiem dynamicznym, takim jak plik PHP, plik jest wykonywany przed wysłaniem z powrotem do użytkownika.
Po odesłaniu żądanego pliku serwer zwykle zamyka połączenie po kilku sekundach.
Zobacz Jak działają serwery internetowe
EDYTUJ:
Dla HTTP używa TCP, który jest protokołem opartym na połączeniu. Oznacza to, że klienci nawiązują połączenie TCP podczas komunikowania się z serwerem.
Wielu klientów może jednocześnie łączyć się z tym samym portem docelowym na tym samym komputerze docelowym. Serwer po prostu otwiera wiele jednoczesnych połączeń.
Apache (i większość innych serwerów HTTP) ma moduł przetwarzania wieloprocesowego (MPM). Jest to odpowiedzialne za przydzielanie wątków/procesów Apache do obsługi połączeń. Te procesy lub wątki mogą następnie działać równolegle we własnym połączeniu, bez wzajemnego blokowania. MPM Apache ma również tendencję do utrzymywania otwartych „wolnych” wątków lub procesów, nawet gdy żadne połączenia nie są otwarte, co pomaga przyspieszyć kolejne żądania.
Uwaga:
Jednym z najczęstszych problemów z wielowątkowością jest „warunki wyścigu”-- gdzie twoje dwa żądania robią to samo ("wyścig", aby zrobić to samo), jeśli jest to pojedynczy zasób, jeden z nich wygra. Jeśli oboje wstawią rekord do bazy danych, obaj nie będą mogli uzyskać tego samego identyfikatora — jeden z nich wygra. Musisz więc być ostrożnym podczas pisania kodu, aby zdać sobie sprawę, że inne żądania są realizowane w tym samym czasie i możesz modyfikować bazę danych, zapisywać pliki lub zmieniać globalne.