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


Set of flashcards Details

Flashcards 500
Language Deutsch
Category Computer Science
Level University
Created / Updated 03.03.2020 / 22.06.2022
Weblink
https://card2brain.ch/box/20200303_java_2
Embed
<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