Multithreading Flashcards

1
Q

Jak osiągnać synchronizacje w Javie

A

1. Synchronized Methods
~~~
public synchronized void synchronizedMethod() {
// kod do synchronizacji
}
~~~

2.** Synchronized Blocks**
- synchronizuje tylko konkretną część kodu zamiast całej metody
~~~
public void someMethod() {
Object lock = new Object();
synchronized(lock) {
// kod do synchronizacji
}
}
~~~

  1. Volatile Keyword:
    - volatile zapewnia, że zmienna jest bezpośrednio odczytywana z głównej pamięci, a nie z pamięci podręcznej wątku.
    - Używane głównie dla zmiennych, które mogą być jednocześnie odczytywane i modyfikowane przez różne wątki.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Ryzko z synchronizacją

A
  • Nadmierna synchronizacja może prowadzić do spadku wydajności, ponieważ wątki będą musiały czekać na dostęp do zasobów.
  • Istnieje ryzyko “zawieszenia” programu, jeśli dwa lub więcej wątków będzie czekało nawzajem na dostęp do zasobów (tzw. “deadlock”).
  • Należy używać synchronizacji tam, gdzie jest to konieczne, starając się minimalizować zakres synchronizowanego kodu.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

CompletableFuture

A
  • pozwala na wykonywanie operacji w sposób asynchroniczny - główny wątek programu może kontynuować swoje działanie, podczas gdy operacje CompletableFuture są wykonywane w tle
  • łączeniu wiele operacji - wykonuje jakieś obliczenia, a następnie przekształca wynik, a następnie wykonuje kolejną operację, gdy poprzednie zostaną zakończone. łancuch - może wykonywać
  • transformacja i przetwarzanie wyników po operacji
  • obługa wyjątków w sposób asynchroniczny
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Jakie są zalety korzystania z wielowątkowości?

A
  • Umożliwiają ciągłe działanie programu, nawet jeśli jego część jest zablokowana.
  • Poprawia wydajność w porównaniu do tradycyjnych programów równoległych, które wykorzystują wiele procesów.
  • Umożliwia pisanie efektywnych programów, które wykorzystują maksymalny czas procesora.
  • Oszczędność czasu i równoległość zadań.
  • Mniejsze zapotrzebowanie na zasoby niż wykonywanie wielu procesów w tym samym czasie.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Czym jest wątek w Javie?

A
  • sekwencja działań, która wykonuje się w kontekście danego procesu (programu)
  • każdy proces ma conajmniej jeden wykonujący wątek
  • są częściami procesu, które pozwalają na wydajne wykonywanie z innymi wątkami w tym samym czasie
  • współdzielą wspólną przestrzeń adresową
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. Jakie są dwa sposoby implementacji wątków w Javie?
A
  1. Extending Thread class
  2. Implementing Runnable interface
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Róźnica pomiędzy wątkiem a procesem

A

Definicja:
- Proces: Niezależna jednostka wykonawcza z własnym stanem programu, zestawem instrukcji i oddzielnym obszarem pamięci.
- Wątek: Lekka jednostka wykonawcza, część procesu, współdzieląca pamięć i zasoby procesu, ale z własnym licznikiem rozkazów i stos.
Zarządzanie zasobami
- Procesy: Bardziej kosztowne, wymagają osobnych zasobów i obszaru pamięci.
- Wątki: Lżejsze, szybsze w tworzeniu, wykorzystują wspólną pamięć procesu.
Komunikacja
- Procesy: Kompleksowa, wymaga specjalnych mechanizmów (IPC).
- Wątki: Prostsza, bezpośrednie współdzielenie danych.
Zależność
- Procesy: Niezależne, awaria jednego nie wpływa na inne.
- Wątki: Zależne od siebie, awaria jednego może wpłynąć na cały proces.
Wykorzystanie
- Procesy: Dla zadań wymagających izolacji i niezależności.
- Wątki: Dla zadań z częstą komunikacją lub dzieleniem danych.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Object Lock

A
  • mechanizm synchronizacji, który kontroluje dostęp do zasobów lub metod konkretnej instancji klasy
  • kiedy wątek posiada blokadę obiektu to** żaden inny wątek nie może wykonać zsynchronizowanej metody tego obiektu **
  • kiedy potrzebujemy kontrolować dostęp do zasobów, które są instancyjnymi (nie statycznymi) częściami klasy
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Class Lock

A
  • mechanizm synchronizacji, który kontroluje dostęp do statycznych zasobów klasy.
  • blokada jest powiązana z klasą, a nie z konkretną instancją.
  • kiedy wątek posiada blokadę klasy, żaden inny wątek nie może wykonywać żadnej zsynchronizowanej metody statycznej tej klasy
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

User Thread vs Deamon Thread

A

Definicje.
- UserThread - standardowy wątek, który zapewnia, że program Java działa nadal w tle. JVM czeka na zakończenie wątku. Używane do głównych zadań programów.
- **Deamon Thread **- wątek , który służy do obłusgi zadań pomocniczych. JVM może zakończyć zadanie, jeśli wątek demonów jest aktywny. Używana do monitorowania zasobów, czyszczenia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Metoda sleep

A
  • należy do klasy Thread
  • służy do wstrzymania bieżacego wątku na określony czas
  • podczas gdy wątek jest uśpiony, nie zwalnia blokad na obiektach które posiada
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Metoda wait

A
  • należy do klasy Object
  • wątek, który wywołuje wait(), uwalnia blokadę ma obiekcie na którym została wykonana i metoda czeka aż inny wątek wyował notify()
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Why wait(), notify(), and notifyAll() methods are present in Object class?

A

W Javie każdy obiekt może służyć jako monitor dla celów synchronizacji. Umożliwia to każdemu obiektowi, niezależnie od jego typu, bycia wykorzystanym do kontroli dostępu do zasobów w sposób zsynchronizowany. Umieszczając te metody w klasie Object, Java zapewnia, że każdy obiekt może być używany do koordynowania działań między wątkami.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Runnable

A
  • interfejs funkcyjny z główna metodą void run()
  • słuzy do definiowania kodu który może być wykonany przez wątek
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Jak stworzyć metodę asynchroniczną w springu

A
  • @Async pozwala na uruchomienie danej metody w osobnym wątku w tle
  • @EnableAsync
How well did you know this?
1
Not at all
2
3
4
5
Perfectly