– Czołem, żołnierzu!
– Dzień dobry, Kapitanie.
– Mam dla Ciebie świetne wiadomości. Oto kilka ćwiczeń, które pomogą Ci utrwalić Twoje umiejętności. Pracuj nad nimi codziennie, a Twoje kompetencje będą bardzo szybko rosły. Zostały one zaprojektowane specjalnie dla IntelliJ IDEA.
18
Zadanie
Podstawy Java, poziom 7, lekcja 10
CRUD
CrUD: Create, Update, Delete (PL: utwórz, aktualizuj, usuń).
Program jest wykonywany z jednym z następujących zestawów argumentów:
-c name sex bd
-u id name sex bd
-d id
-i id
Wartości argumentów:
name (String)
sex (płeć, "m" lub "f")
bd (data urodzenia w następującym formacie: "04 15 1990")
-c (dod
18
Zadanie
Podstawy Java, poziom 7, lekcja 10
CRUD 2
Batch CrUD: wielokrotne tworzenie, aktualizowanie, usuwanie.
Program jest wykonywany z jednym z następujących zestawów argumentów:
-c name1 sex1 bd1 name2 sex2 bd2 ...
-u id1 name1 sex1 bd1 id2 name2 sex2 bd2 ...
-d id1 id2 id3 id4 ...
-i id1 id2 id3 id4 ...
Wartości argumentów:
name (String)
sex (
18
Zadanie
Podstawy Java, poziom 7, lekcja 10
Restauracja
1. Dowiedz się, co robi program. Z jakiegoś powodu kelner nie podaje do stolików przygotowanych dań :(
2. Napraw błąd.
Wskazówka: do poprawy jest tylko jedna linia
18
Zadanie
Podstawy Java, poziom 7, lekcja 10
Lista współdzielona
1. Zmień klasę Solution tak, aby stała się ona listą. (Musi ona implementować interfejs java.util.List).
2. Lista Solution powinna działać tylko z typem Long.
3. Użyj pola original.
4. Lista będzie używana przez wątki, więc musisz się upewnić, że wszystkie metody są synchronized.
9
Zadanie
Podstawy Java, poziom 7, lekcja 10
Comparable
Zaimplementuj interfejs Comparable<Beach> w klasie Beach. Beaches będzie używane przez wątki, więc musisz się upewnić, że wszystkie metody są synchronized.
Zaimplementuj metodę compareTo tak, aby przy porównywaniu dwóch plaż metoda zwracała liczbę dodatnią, jeśli pierwsza plaża jest lepsza
lub
18
Zadanie
Podstawy Java, poziom 7, lekcja 10
Apteka
Zaimplementuj interfejs Runnable w klasach Pharmacy i Person.
Wszystkie wątki powinny być wykonywane dopóki isStopped ma wartość true.
Oto logika dla klasy Pharmacy: drugController powinien dokonywać zakupu, wzywając metodę void buy(Drug drug, int count), losowo wybranego leku (getRandomDrug) w iloś
5
Zadanie
Podstawy Java, poziom 7, lekcja 10
Metody zsynchronizowane
Ustaw modyfikator synchronized tylko względem tych metod, które go potrzebują.
Obiekt Solution będzie wykorzystywany przez wątki.
9
Zadanie
Podstawy Java, poziom 7, lekcja 10
Nadmierna synchronizacja
Słowo kluczowe synchronized znacząco spowalnia program, więc usuń niepotrzebne polecenia synchronized zawarte w metodach.
5
Zadanie
Podstawy Java, poziom 7, lekcja 10
Prasowanie
Wróćmy do szarej codzienności...
Dodaj jedno słowo kluczowe synchronized tak, aby diana i steve prasowali na zmianę, ponieważ mają tylko jedno żelazko!
Wskazówka:
Użyj blokady na poziomie klasy.
5
Zadanie
Podstawy Java, poziom 7, lekcja 10
ApplicationContext
Klasa ApplicationContext będzie dostępna dla wielu wątków.
Upewnij się, że żadne dane nie zostaną utracone: zastanów się, jakie słowo kluczowe należy umieścić i w którym miejscu.
– Te poprzednie ćwiczenia były dla nowicjuszy. Dodałem trochę dodatkowych, zaawansowanych ćwiczeń dla weteranów. Tylko dla weteranów.
9
Zadanie
Podstawy Java, poziom 7, lekcja 10
Bankomat
Dowiedz się, jak działa program.
Podczas testów stwierdzono, że log zawierał następujące informacje:
.....
Wpłata 100, saldo konta 1100
Wpłata 100, saldo konta 1200
Wypłata 1000, saldo konta 100
Brak wystarczających środków
.....
Mamy do czynienia z błędem:
W momencie obciążania konta pieniądze prz
18
Zadanie
Podstawy Java, poziom 7, lekcja 10
Transakcyjność
Spraw, aby metoda joinData była transakcyjna, tzn. jeżeli zakończy się niepowodzeniem, to dane nie mogą zostać zmienione.
1. Wczytaj 2 nazwy plików z konsoli.
2. Wczytaj po kolei linie z pliku. Wczytaj linie z pierwszego pliku do allLines, a z drugiego pliku do linesForRemoval.
W metodzie joinData:
9
Zadanie
Podstawy Java, poziom 7, lekcja 10
Policzmy
1. Zrób to tak, aby wynik był obliczany dla wszystkich elementów tablicy, BEZ użycia Thread.sleep w metodzie main(String[] args).
2. Popraw blok synchronized tak, aby tablica values była wypełniona cyframi 1.