java 2
Von Oracle Certified Professional Java SE 8 Programmer 2 Study guide - Jeanne Boyarsky and Scott Selikoff
Von Oracle Certified Professional Java SE 8 Programmer 2 Study guide - Jeanne Boyarsky and Scott Selikoff
Kartei Details
Karten | 500 |
---|---|
Sprache | Deutsch |
Kategorie | Informatik |
Stufe | Universität |
Erstellt / Aktualisiert | 03.03.2020 / 22.06.2022 |
Weblink |
https://card2brain.ch/box/20200303_java_2
|
Einbinden |
<iframe src="https://card2brain.ch/box/20200303_java_2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Bei numerischen AtomicClasses: Wie pre-incrementet man (++value)?
incrementAndGet()
Bei numerischen AtomicClasses:Wie post-incremented man (++value)?
getAndIncrement()
Bei numerischen AtomicClasses:wie pre-decrementet man (--value)?
decrementAndGet()
Bei numerischen AtomicClasses: WIe post-decrementet man (value--)?
getAndDecrement()
Was ist ein Monitor?
Eine Struktur das mutal excluision supportet oder die property die von höchstens einem thread bearbeitet wird. Bswp: synchronized(monitor) {..}
Wie erstellt man einen syncrhonized block? was ist das?
synchronzied(monitor) {..}
Nur ein THread kann in den syncrhonized block
Kann man synchronized auch an methoden und an statische Methoden kleben?
Ja
Was ist der Sinn von concurrent collections?
Sie lösen viele mempry consistency errors
Was ist ein memory consistency error?
Wenn zwei (oder mehrere) THreads inkonsistente Sichten auf daten haben die eigentlich die gleichen sein sollten
Was für ein Fehler tritt auf wenn zwei threads versuchen die gleiche, non-current collection zu bearbeiten?
Eine ConcurrentModificationException
Was kann hier passieren? Wie lösen?
Map<String, Object> foodData = new HashMap<String, Object>();
foodData.put("penguin", 1);
foodData.put("flamingo", 2);
for(String key: foodData.keySet())
foodData.remove(key);
Eine ConcurrentModificationException zur Laufzeit da keyset() nicht geupdated wird nachdem das erste Element gellöscht wird
Kann gelöst werden indem ConcurrentHashMap verwendet wird
Wann sollte man concurrent collections verwenden?
Immer wenn mehrere Threads die collection bearbeiten könnten (außerhalb eines syncrhonnized blocks)
Was gibt es für Concurrent collection classes?
- ConcurrentHashMap
- ConcurrentLinkedDeque
- ConcurrentLinkedQueue
- ConcurrentSkipListMap
- ConcurrentSkipListSet
- CopyOnWriteArrayList
- CopyOnWriteArraySet
- LinkedBölockingDeque
- LinkedBlockingQueue
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
ConcurrentHashMap
ConcurrentMap, nicht geordnet, nicht sprtiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
ConcurrentLinkedDeque
Deque, geordnet, nicht sortiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
ConcurrentLinkedQueue
Queue, geordnet, nicht sortiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
ConcurrentSkipListMap
ConcurrentMap,SortedMap,NavigableMapo, geordnte, sortiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
ConcurrentSkipListSet
SortedSet,NavigableSet, geordnet, sortiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
CopyOnWriteArrayList
List, geordnet, nicht sortiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
CopyOnWriteArraySet
Set, nicht geordnet, nicht sortiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
LinkedBlockingDeque
BlockingQueue, BlockingDeque, geordnet, nicht sortiert, nicht blocking
Was für ein java collections framework interface wird hier implementiert? Elements geordned? Sortiert? blocking?
LinkedBlockingQueue
BlockingQueue, geordnet, nicht sortiert, blocking
Was gibt res für zusätzliche Methoden in ein er blocking queue?
- offer(E e, long timeout, TimeUnit unit) - fügt ein item hinzu, returned false falls time elapses bevore space frei ist
- poll(long timeout, TimeUnit unit) - gibt element zurück und löscht es, null fals ime elapses bevor element verfügbar
Was kjann eine LinkedBlockiungQueue für einen Fehler schmeißen? Was implementiert eine LinkedBlockjingQueue?
InterruptedException. Queue, BlockingQueue
Was für Methoden fügt blockingDequeue hinzu?
- offerFirst(E e,long timeout, TimeUnit unit) - added item am anfang, false falls zeit elapses bevore space frei
- offerLast(E e,long timeout, TimeUnit unit) - " nur am ende
- pollFirst(long timeout, TimeUnit unit) - retrieves, removes item vom anfang, null fals zeit elapses bevore item verfügbar
- pollLast(long timeOut, TimeUnit unit) - " nur das letzte
Was kmachen CopyOnWriteCollections?
Kopieren alle elemente zu einer neuen,internen collection wenn ein element hinzukommt, wegfällt oder eine referenz geändert wird. D.h. bei iteratoren werden alle changes nachdem der iterator erstellt wurde nicht berücksichtig und es kommt auch zu keiner ConcurrentModificationException
Was ist hier die Ausgabe?
List<Integer> list = new CopyOnWriteArrayList<>(Arrays.asList(4,3,52));
for(Integer item: list) {
System.out.print(item+" ");
list.add(9);
}
System.out.println();
System.out.println("Size: "+list.size());
4 3 52
Size: 6
Wann sollte man Syncrhonized collections methods nehmen (von einer collection eine syncrhonized collection bekommen)? Worauf achten?
Wenn man eine collection bekommt die noch nicht synchronized ist, es aber sein sollte.
get(), set(),.. werden synchronized aber acces zu iteratoren die man von der synchronized collection erstellt nicht!
Was passiert hier?
Map<String, Object> foodData = new HashMap<String, Object>();
foodData.put("penguin", 1);
foodData.put("flamingo", 2);
Map<String,Object> synchronizedFoodData = Collections.synchronizedMap(foodData);
for(String key: synchronizedFoodData.keySet())
synchronizedFoodData.remove(key);
ConcurrentModificationException da iterator nicht snychronized bei Colletions.synchronizedMap()
Was ist ein serial stream?
Ein stream in dem alle resukts geordnet sind und nur ein Eintrag zu einer Zeit verarbeitet wird
Was ist ein parallel stream?
Ein stream der mehrere ergebnisse gleichzeitig erzeugen kann indem er mehrere threads benutzt
Wie können parallelStreams erstellt werden?
- Von normalem stream mit stream.parallel() -Y intermediate operation, operiert auf dem orginalen stream
- Collection.parallelStream() (z.B. : Arrays.asList(1,2,3).parallelStream();)
Wie kann man die Ergebnisse von forEach bei paralellStreams sortieren?
Statt forEach nimmt man forEachOrdered(), man verliert aber die perfomancebenifits!
Was passiert wenn findAny() auf einem parallelStream ausgeführt wird?
Es wird irgendein wert zurückgegeben, kann sich unterscheiden von einem normalen Stream
Was passiert mit stream operationen die auf einer ordnung basieren bei paralell streams?
Wernden in einer synchronized-art ausgeführt -> performance geht verloren
Wie kann man reduce bei parallel streams verwenden damit die Ausgabe auch geordnet ist?
- identyt muss so definiert sein dass für alle Elemente im stream gilt: combiner.apply(identity, u) equal to u
- accumulator op muss assoziativ und stateless sein: (a op b) op c = a op (b op c)
- combiner muss assoziativ, stateless und kompatibel mit der identity sein sodas für alle u und t gilt: combiner.apply(u, accumulator.apply(identity,t)) = accumulator.apply(u,t)
Wann kann collect korrekt auf parallel streams verwendet werden?
Wenn, wie bei reduce, der accumulator und combiner assoziativ und stateless ist (gleiche regeln wie bei reduce)
Was für eine Colletion sollte man bei collect bei parallel streams verwenden?
Eine concurrent collection (bspw. ConcurrentSkipListSet
Was gibt es für Regeln für die parallele reduction mit collect?
- der Stream muss parallel sein
- der parameter der collect operation hat die Collector.Characteristics.CONCURRENT
- Entweder der Stream ist ungeordnet oder der collector hat die Collector.Characteristics.UNORDERED
Was kann man mit einer CyclicBarrier machen?
Eine Schranke anlegen bei der gewartet werden soll bis X-Tasks die Schranke erreicht haben. ERst dann kiann es weitergehen