cvičení 09 - Threads

Java Concurrency - Threads, Executors, Future
Threads
V projektu cvičení 1 , cvičení 2, cvičení 3
Naimplementujte metody startServer a connectToServer ve třídě lab.game.Level zajistili to aby jedna instance hry fungovala jako hlavní server a další instance hry mohly běžet v režimu viewMode kdy nebudou provádět vlastní běh jen budou zobrazovat stav hry ze serveru.
Zajistěte aby
- všechny třídy, které se budou serializovat (posílat přes socket) implementovali rozhraní Serializable a měli serialVersionUID.
- všechny odkazy (propojení) na objekty, které není třeba serializovat (Level, DeadListener) byli označeny jako transient
- metoda startServer otevela ServerSocket na portu 4600 a pokud se na něj někdo připojí (klidně i více klientů), bude pomocí serializace a ObjectOutputStream posílat objekty (vše co je v kolekci entities) připojenému klientovy. Server bude mít své vlákno a každý klient také musí mít vlákno, které se bude starat o komunikaci s ním.
- metoda connectToServer se přípojí pomocí Socket na port 4600 a bude načítat kolekci objektů (entit), které se začlení do světa, který je bude automaticky vykreslovat.
- všude kde se pracuje (prochází, edituje) s kolekcí entities je třeba zajistit aby se vlákna neprolínaly, aby vždy s kolekcí pracovalo jen jedno vlákno.
Řešení
Řešení najdete v https://gitlab.vsb.cz/jez04-vyuka/java2/labs/java2lab09v1/-/tree/solution?ref_type=heads ve větvi solution.
https://gitlab.vsb.cz/jez04-vyuka/java2/labs/java2lab09v2/-/tree/solution?ref_type=heads
https://gitlab.vsb.cz/jez04-vyuka/java2/labs/java2lab09v3/-/tree/solution?ref_type=heads
Způsob odevzdání
Řešení domácího úkolu odevzdejte do systému Kelvin jako úlohu "Java 1 - domácí úkol z 3. cvičení". Do systému nahrejde celý obsah složky src a soubor pom.xml (prípadně run skript). Postupujte dle níže přiloženého vide.
Následně bude projekt zkompilován a provedou se Unit Testy. Vzhledem k povaze projektu a prozatímnímu testovacímu využití systému Kelvin v předmětu Java 2 v případě selhání nezoufejte.
Jedná se o pomocný test, vše bude ještě hodnoceno ručně. Důležité je nahrát soubory aby bylo možno vše vyhodnotit a provést analýzu na plagiáty. Věřím, že je to je formalita a všichni z Vás tvoří vlastní kód.