Java – Lesson 10

  1. Zkonzultujte aktuální verzi vašeho zápočtového projektu.
  2. Použijte v tabulce výsledků datum a čas ve vhodném formátu, přidejte třídění (viz přednáška).
  3. Odzkoušejte si základní práci s vlákny (viz přednáška), čekání, synchronizaci vláken apod.
  4. 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