- Zkonzultujte aktuální verzi vašeho zápočtového projektu.
- Použijte v tabulce výsledků datum a čas ve vhodném formátu, přidejte třídění (viz přednáška).
- Odzkoušejte si základní práci s vlákny (viz přednáška), čekání, synchronizaci vláken apod.
- Vyzkoušejte si základní práci se streamy (viz přednáška).
java.time
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
System.out.printf(“Now (from Instant):%s%n”,LocalDateTime.ofInstant(Instant.now(), ZoneId.systemDefault()));
Vlákna
Vyzkoušejte si základní práci s vlákny (můžete použít příklad probraný na přednášce).
Deklarace volatile (nestálý) znamená, že k obsahu proměnné může přistupovat ještě nějaký jiný proces než ten, který je řízen aktuálním zdrojovým kódem.
private volatile int contents;
Synchronizace
Synchronizace na úrovni metod zajistí, že pro jednu instancí objektu může do všech jeho synchronizovaných metod vstoupit právě jedno vlákno. Ostatní (nesynchronizované) metody nijak ovlivněné nejsou. Pomocí “synchronized” lze synchronizovat blok, instanční metodu nebo statickou metodu.
public synchronized int get() {
Uspání vlákna
sleep – vlákno uspí na zadaný počet milisekund
Komunikace mezi vlákny
wait – aktuální vlákno se zablokuje a odemkne monitor
notify – nahodně se aktivuje jedno vybrané vlákno zablokované na monitoru
notifyAll – aktivují se všechna zablokovaná vlákna na monitoru