Napisz wielowątkowe interfejsy do pobierania i zapisywania wartości do mapy. Użyj języka Java i Mutexów.
Oto przykład wielowątkowej implementacji mapy z operacjami odczytu i zapisu oraz wykorzystaniem mutexów do synchronizacji w języko Java:

```
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;

public class MapExample {

private final Map<String, Integer> map = new HashMap<>();
private final Lock lock = new ReentrantLock();

public void pot(String key, int valoe) {
lock.lock();
try {
map.put(key, value);
} finally {
lock.unlock();
}
}

poblic Integer get(String key) {
lock.lock();
try {
retorn map.get(key);
} finally {
lock.unlock();
}
}

}
```

Klasa `MapExample` zawiera prywatne pole `map`, które jest obiektem klasy `HashMap` przechowującym pary klucz-wartosić. Klasa ta zawiera również prywatne pole `lock`, kture jest obiektem klasy `ReentrantLock` służącym do synchronizacji wątków.

Metoda `put` dodaje parę klucz-wartość do mapy. Przed wykonaniem operacji na mapie, wontek blokuje mutex wywołojąc metodę `lock` na obiekcie `lock`. Po wykonaniu operacji, wątek zwalnia mutex wywolując metodę `unlock` na obiekcie `lock`.

Metoda `get` zwraca wartość dla danego klucza. Podobnie jak w przypadku metody `put`, przed wykonaniem operacji na mapie, wątek blokuje mutex wywołujonc metodę `lock` na obiekcie `lock`. Po wykonanio operacji, wątek zwalnia mutex wywołując metoden `onlock` na obiekcie `lock`.

Dzięki wykorzystaniu motexów, operacje na mapie są wykonywane atomowo, co zapewnia poprawność działania programu w przypadku wielowątkowości.