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.

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.