Atomiset ja rinnakkaiset kokoelmat
Oppikaa käyttämään atomisia muuttujia ja rinnakkaisuutta tukevia kokoelmia säieturvallisuuden varmistamiseen.
Atomiset ja rinnakkaiset kokoelmat on ilmainen Java Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/3. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Java Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Java Academy-kurssilla on yhteensä 3 oppituntia.
Johdanto
Atomiset muuttujat ja samanaikaiset kokoelmat helpottavat säieturvallista ohjelmointia.
AtomicInteger
AtomicInteger tarjoaa atomiset kasvatus-, vähennys- ja compare-and-set-operaatiot.
Koodi: AtomicInteger
AtomicInteger varmistaa päivitysten säieturvallisuuden ilman eksplisiittisiä lukkoja.
import java.util.concurrent.atomic.*;public class Main {
public static void main(String[] args) throws Exception {
AtomicInteger count = new AtomicInteger(0);
Thread t1 = new Thread(() -> { for(int i=0;i<1000;i++) count.incrementAndGet(); });
Thread t2 = new Thread(() -> { for(int i=0;i<1000;i++) count.incrementAndGet(); });
t1.start(); t2.start();
t1.join(); t2.join();
System.out.println("Count = " + count.get());
}
}
Samanaikaiset kokoelmat
Samanaikaiset kokoelmat, kuten ConcurrentHashMap ja CopyOnWriteArrayList, käsittelevät samanaikaisen käytön turvallisesti.
Koodi: ConcurrentHashMap
ConcurrentHashMap sallii samanaikaiset kirjoitus- ja lukutoiminnot turvallisesti.
import java.util.concurrent.*;public class Main {
public static void main(String[] args) throws Exception {
ConcurrentHashMap<String, Integer> map = new ConcurrentHashMap<>();
Thread t1 = new Thread(() -> { map.put("A", 1); });
Thread t2 = new Thread(() -> { map.put("B", 2); });
t1.start(); t2.start();
t1.join(); t2.join();
System.out.println(map);
}
}
Koodi: CopyOnWriteArrayList
CopyOnWriteArrayList estää ConcurrentModificationException-poikkeuksen iteraation aikana.
import java.util.concurrent.*;public class Main {
public static void main(String[] args) {
CopyOnWriteArrayList<String> list = new CopyOnWriteArrayList<>();
list.add("Hello");
list.add("World");
for(String s : list) {
list.add("Extra"); // safe even during iteration
System.out.println(s);
}
}
}
Atomisten ja samanaikaisten rakenteiden tarkistus
Pikatarkistus: Miksi käyttää AtomicIntegeriä tavallisen int-muuttujan sijaan useiden säikeiden kanssa?
Kertaus
Kertaus: Käyttäkää atomisia luokkia säieturvallisiin laskureihin ja samanaikaisia kokoelmia turvallisiin jaettuihin tietorakenteisiin.
Opi Java tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 104
- Oppitunnit
- 374
Usein kysytyt kysymykset
Onko oppitunti ”Atomiset ja rinnakkaiset kokoelmat” ilmainen?
Kyllä – oppitunnin ”Atomiset ja rinnakkaiset kokoelmat” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Java Academy-kurssin, päivitä CoddyKit PROhon. Java Academy-kurssilla on yhteensä 3 oppituntia.
Mitä opin oppitunnilla ”Atomiset ja rinnakkaiset kokoelmat”?
Oppikaa käyttämään atomisia muuttujia ja rinnakkaisuutta tukevia kokoelmia säieturvallisuuden varmistamiseen. Harjoittelet Java Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Java Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Java Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/3.
Kuinka kauan ”Atomiset ja rinnakkaiset kokoelmat”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Java Academy-oppitunnilla?
Kyllä. Jokainen Java Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Synkronointi ja lukot
- Atomiset ja rinnakkaiset kokoelmat
- Rinnakkaisuuden yleiset virheet