Haaste: Concurrentmap
Tehtävä:
Monisäikeisen kävijälaskentajärjestelmän toteutus.
Kuvaus:
Toteutettava ohjelma, joka seuraa eri sivujen käyntikertojen määrää. Ohjelman tulee toimia oikein monisäikeisessä ympäristössä, jossa useat säikeet voivat samanaikaisesti kasvattaa eri sivujen käyntilaskureita.
Vaatimukset:
- Käytä
ConcurrentHashMap-rakennetta tallentaaksesi tiedot sivukäynneistä; - Toteuta metodi, joka kasvattaa tietyn sivun käyntimäärää.
incrementVisit(); - Toteuta metodi, joka palauttaa tietyn sivun nykyisen käyntimäärän.
getVisitCount(); - Luo useita säikeitä, jotka kasvattavat käyntimääriä samanaikaisesti. (Tämä on toteutettu
Main-luokassa, sinun tulee selvittää, mitä siellä tapahtuu).
Vinkkejä:
- Käytä
ConcurrentHashMap-rakennetta, jossa avain on sivun URL ja arvo on käyntimäärä; - Käytä
compute()- taimerge()-metodeja laskureiden atomiseen päivittämiseenConcurrentHashMap-rakenteessa.
Sinun tulee toteuttaa metodit PageVisitCounterImpl-luokassa ja sen jälkeen suorittaa testit PageVisitCounterTest-luokassa.
Kun olet suorittanut tehtävän onnistuneesti, kaikkien testien tulisi mennä läpi.
Kun olet tehnyt kaiken oikein, voit kokeilla muokata riviä, jossa ConcurrentMap määritellään PageVisitCounterImpl-luokassa ja katsoa mitä tapahtuu.
Eli sinun tulee korvata tämä rivi tässä ConcurrentMap-toteutuksella.
Main.java
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
Tässä esimerkissä käytetään tavallista Map-toteutusta
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Kiitos palautteestasi!
Kysy tekoälyä
Kysy tekoälyä
Kysy mitä tahansa tai kokeile jotakin ehdotetuista kysymyksistä aloittaaksesi keskustelumme
Can you show me the code for the PageVisitCounterImpl class?
What do the incrementVisit() and getVisitCount() methods currently look like?
Can you explain how the Main class is creating and running the threads?
Awesome!
Completion rate improved to 3.33
Haaste: Concurrentmap
Pyyhkäise näyttääksesi valikon
Tehtävä:
Monisäikeisen kävijälaskentajärjestelmän toteutus.
Kuvaus:
Toteutettava ohjelma, joka seuraa eri sivujen käyntikertojen määrää. Ohjelman tulee toimia oikein monisäikeisessä ympäristössä, jossa useat säikeet voivat samanaikaisesti kasvattaa eri sivujen käyntilaskureita.
Vaatimukset:
- Käytä
ConcurrentHashMap-rakennetta tallentaaksesi tiedot sivukäynneistä; - Toteuta metodi, joka kasvattaa tietyn sivun käyntimäärää.
incrementVisit(); - Toteuta metodi, joka palauttaa tietyn sivun nykyisen käyntimäärän.
getVisitCount(); - Luo useita säikeitä, jotka kasvattavat käyntimääriä samanaikaisesti. (Tämä on toteutettu
Main-luokassa, sinun tulee selvittää, mitä siellä tapahtuu).
Vinkkejä:
- Käytä
ConcurrentHashMap-rakennetta, jossa avain on sivun URL ja arvo on käyntimäärä; - Käytä
compute()- taimerge()-metodeja laskureiden atomiseen päivittämiseenConcurrentHashMap-rakenteessa.
Sinun tulee toteuttaa metodit PageVisitCounterImpl-luokassa ja sen jälkeen suorittaa testit PageVisitCounterTest-luokassa.
Kun olet suorittanut tehtävän onnistuneesti, kaikkien testien tulisi mennä läpi.
Kun olet tehnyt kaiken oikein, voit kokeilla muokata riviä, jossa ConcurrentMap määritellään PageVisitCounterImpl-luokassa ja katsoa mitä tapahtuu.
Eli sinun tulee korvata tämä rivi tässä ConcurrentMap-toteutuksella.
Main.java
1private final ConcurrentMap<String, Integer> visitCounts = new ConcurrentHashMap<>();
Tässä esimerkissä käytetään tavallista Map-toteutusta
Main.java
1private final Map<String, Integer> visitCounts = new HashMap<>();
Kiitos palautteestasi!