Podstawy współbieżności

Wielkość: px
Rozpocząć pokaz od strony:

Download "Podstawy współbieżności"

Transkrypt

1 Podstawy współbieżności Algorytmy i struktury danych. Wykład 6. Rok akademicki: 2010/2011 Od koncepcji współbieżności do systemów rozproszonych Współbieżnośd rozważany na poziomie koncepcyjnym sposób realizacji zadao obliczeniowych dopuszczający możliwośd jednoczesnego wykonywania więcej niż jednej czynności. Realizacja koncepcji współbieżności: systemy z podziałem czasu (w rzeczywistości zadania nie są realizowane w sposób równoległy; czas pracy procesora dzielony jest pomiędzy realizowane zadania; jest to praca pozornie równoległa) systemy równoległe (pozwalające na rzeczywistą równoległośd): maszyny wieloprocesorowe (komunikacja odbywa się za pośrednictwem pamięci operacyjnej), systemy rozproszone (połączone ze sobą komputery współpracujące ze sobą w celu rozwiązania zadania; komunikacja odbywa się za pośrednictwem sieci komputerowej). 2 1

2 Zalety współbieżności zwiększenie wydajności (skrócenie czasu realizacji programu): w systemach równoległych jednoczesne wykonywanie wielu zadao (na różnych procesorach/maszynach) w systemach z podziałem czasu lepsze wykorzystanie zasobów komputera 3 Wady współbieżności Zwiększona trudnośd w projektowaniu algorytmów przetwarzania: zaprojektowanie właściwego sposobu podziału zadania na realizowane równolegle podzadania, określenie zasad komunikacji pomiędzy realizowanymi równolegle wątkami, określanie zasad dostępu do współdzielonych danych, zwiększone prawdopodobieostwo popełnienia błędów. 4 2

3 Realizacja koncepcji współbieżności w języku Java wątki: logicznie wyodrębnione sekwencje instrukcji realizowane w sposób pozornie równoległy; wykorzystują mechanizm podziału czasu; realizowane są w obrębie tej samej maszyny wirtualnej; programowanie rozproszone (sieciowe): komunikujące się ze sobą programy uruchamiane na różnych komputerach (i różnych maszynach wirtualnych); programowanie rozproszone wykorzystuje wielowątkowośd. 5 Program jednowątkowy Wątek - częśd programu, która może byd realizowana w sposób współbieżny. Program jednowątkowy - składa się z jednej sekwencji instrukcji /tzw. wątek główny programu/ (w języku Java tworzą one treśd metody main( ) w klasie bazowej). 6 3

4 Program wielowątkowy Z poziomu wątku głównego tworzone są inne, realizowane współbieżnie, wątki; Każdy wątek może tworzyd kolejne wątki; Wątki mogą korzystad ze wspólnych danych; Program wielowątkowy kooczy pracę po zrealizowaniu wątku głównego i wszystkich pozostałych wątków. 7 Reprezentacja wątków w języku Java Wątek reprezentowany jest przez klasę będącą potomkiem klasy Thread, której najważniejsze metody to: public Thread() - konstruktor obiektu reprezentującego wątek public Thread(String name) - konstruktor pozwalający nadad nazwę tworzonemu wątkowi public void run() - definiuje operacje realizowane w ramach wątku public void start() - wywołuje metodę run() 8 4

5 Definiowanie wątków za pomocą obiektów klasy Thread i klas pochodnych class Gwiazdka extends Thread { public void run() { for (int i = 0; i < 10;i++) { System.out.print("*"); try { sleep(1000); catch(interruptedexception e) { 9... class Plus extends Thread { public void run() { for (int i = 0; i < 10;i++) { System.out.print("+"); try { sleep(1000); catch(interruptedexception e) { 10 5

6 ... public class TworzenieWatkow1 { public static void main(string [] args) { Gwiazdka g = new Gwiazdka(); Plus p = new Plus(); g.start(); p.start(); System.out.print("KONIEC"); Wyniki działania programu KONIEC*++**++*+*+*+*+*+**+ Definicja metody sleep (w klasie Thread): public static void sleep(long millis) throws InterruptedException 11 Definiowanie wątku za pomocą klasy implementującej interfejs Runnable Obliczenia realizowane przez wątek opisane są w klasie implementujacej interfejs Runnable Interfejs Runnable definiuje nagłówek jednej metody: public void run() metoda ta definiuje operacje realizowane w ramach wątku. Przedstawiony mechanizm tworzenia wątków należy stosowad wtedy, gdy klasa reprezentująca wątek jest potomkiem klasy innej niż Thread (np. klasy Applet) i - z uwagi na jednokrotny charakter dziedziczenia w języku Java - nie może dziedziczyd cech klasy Thread. Obiekt klasy implementującej interfejs Runnable należy przekazad jako parametr konstruktora w trakcie tworzenia obiektu typu Thread. Uruchomienie wątku następuje za pomocą metody start(), która wywołuje metodę run(). 12 6

7 Przykład class Gwiazdka implements Runnable { public void run() { for (int i = 0; i < 10;i++) { System.out.print("*"); try { Thread.sleep(1000); catch(interruptedexception e) { class Plus implements Runnable { public void run() { for (int i = 0; i < 10;i++) { System.out.print("+"); try { Thread.sleep(1000); catch(interruptedexception e) { 14 7

8 ... public class TworzenieWatkow2 { public static void main(string [] args) { Thread g = new Thread(new Gwiazdka()); Thread p = new Thread(new Plus()); g.start(); p.start(); System.out.print("KONIEC"); Wyniki działania programu KONIEC*+*+*+*+*+*+*+*+*+*+ 15 Korzystanie ze wspólnych zasobów Wątki mogą korzystad ze wspólnych zasobów, ale program powinien sterowad dostępem do współużytkowanych obiektów. Do sterowanie dostępem do wspólnych zasobów służy mechanizm synchronizacji. 16 8

9 Korzystanie ze wspólnych zasobów bez mechanizmu synchronizacji Przykład programu nie zawierającego mechanizmów synchronizacji - wspólnym zasobem jest standardowy strumieo wyjściowy. class Watek1 implements Runnable { public void run() { for (int i = 1; i <= 10; i++) { try { Thread.sleep(100); catch (InterruptedException e) { System.out.print("A"); class Watek2 implements Runnable { public void run() { for (int i = 1; i <= 10; i++) { try { Thread.sleep(100); catch(interruptedexception e) { System.out.print("B"); 18 9

10 ... public class WspolneZasoby { public static void main(string [] args) { Thread w1 = new Thread(new Watek1()); Thread w2 = new Thread(new Watek2()); w1.start(); w2.start(); System.out.println("KONIEC"); Wynik działania programu: KONIEC BABABAABBABABABAABBA 19 Sekcja krytyczna wątku Sekcja krytyczna wątku - fragment programu (będącego częścią wątku), z poziomu którego następuje odwołanie do wspólnego zasobu. W danej chwili tylko jeden wątek może realizowad kod tworzący sekcję krytyczną

11 Schemat sekcji krytycznej Wątek 1 Wątek 2 sekcja krytyczna sekcja krytyczna Wspólny zasób 21 Realizacja sekcji krytycznej Jeżeli wątek A realizuje swoją sekcję krytyczną, to wątek B, po dojściu do fragmentu kodu tworzącego jego sekcję krytyczną, zostanie wstrzymany, aż do chwili zakooczenia realizacji sekcji krytycznej przez wątek A. Po zakooczeniu realizacji sekcji krytycznej wątku A realizacja wątku B zostanie wznowiona

12 Monitor jako narzędzie realizacji sekcji krytycznej mechanizm pozwalający na blokowania dostępu do obiektu; blokowanie odbywa się poprzez zajęcie monitora obiektu; monitor może zastad zajęty tylko przez jeden wątek; jeśli wątek A chce zająd monitor obiektu, który jest aktualnie w posiadaniu wątku B, to realizacja wątku A jest wstrzymywana do momentu zwolnienia monitora przez wątek B; każdy obiekt występujący w programie posiada oddzielny monitor. Wątek 1 Wątek 2 sekcja krytyczna Monitor Wspólny zasób sekcja krytyczna 23 Monitor w języku Java synchronized (nazwaobiektu) //zajęcie monitora obiektu {... instrukcje tworzące sekcję krytyczną... //zwolnienie monitora obiektu 24 12

13 Przykład class Watek1 implements Runnable { public void run() { synchronized (System.out) { for (int i = 1; i <= 10; i++) { try { Thread.sleep(100); catch (InterruptedException e) { System.out.print("A"); class Watek2 implements Runnable { public void run() { synchronized (System.out) { for (int i = 1; i <= 10; i++) { try { Thread.sleep(100); catch(interruptedexception e) { System.out.print("B"); 26 13

14 ... public class WspolneZasoby { public static void main(string [] args) { Thread g = new Thread(new Watek1()); Thread p = new Thread(new Watek2()); g.start(); p.start(); System.out.println("KONIEC"); Wyniki działania programu: KONIEC AAAAAAAAAABBBBBBBBBB UWAGA: Program nie określa, który wątek zajmie monitor obiektu System.out jako pierwszy. Z tego powodu przy kolejnej realizacji programu można uzyskad wynik: KONIEC BBBBBBBBBBAAAAAAAAAA 27 Metoda wait synchronized (obiekt) {... obiekt.wait()... musi byd wywoływana z sekcji krytycznej wątku (gdy wątek zajął monitor obiektu obiekt), powoduje, że realizacja wątku jest zawieszana i wątek zwalnia monitor (który może zostad zajęty przez inny wątek), realizacja zawieszonego wątku może zostad wznowiona wówczas, gdy inny wątek zajmie monitor obiektu obiekt i uruchomi metodę notify() lub notifyall()

15 Metoda notify synchronized (obiekt) {... obiekt.notify()... wznawia działanie jednego (wybranego przypadkowo) wątku wstrzymanego wcześniej za pomocą metody obiekt.wait(). Realizacja wznowionego wątku może rozpocząd się po zakooczeniu realizacji sekcji krytycznej bieżącego wątku 29 Metoda notifyall synchronized (obiekt) {... obiekt.notifyall()... wznawia działanie wszystkich wątków wstrzymanych wcześniej za pomocą metody obiekt.wait(). Realizacja jednego z nich rozpocznie się po zakooczeniu realizacji sekcji krytycznej bieżącego wątku

16 Problem producenta i konsumenta Producent Konsument Pojemnik 31 P-K, wersja I class Pojemnik { private int liczba; synchronized public int pobierz() { System.out.println("Z pojemnika pobierana jest wartosc: " + liczba); return liczba; synchronized public void wstaw(int liczba) { System.out.println("Do pojemnika wstawiana jest wartosc: " + liczba); this.liczba = liczba; 32 16

17 P-K, wersja I, ciąg dalszy class Producent implements Runnable { Pojemnik p; Producent(Pojemnik p) { this.p = p; public void run() { for (int i = 1; i <= 10; i++) { try { Thread.sleep((int) (100 * Math.random())); catch (InterruptedException e) { p.wstaw(i); 33 P-K, wersja I, ciąg dalszy class Konsument implements Runnable { Pojemnik p; Konsument(Pojemnik p) { this.p = p; public void run() { for (int i = 1; i <= 10; i++) { try { Thread.sleep((int) (100 * Math.random())); catch (InterruptedException e){ p.pobierz(); 34 17

18 P-K, wersja I, ciąg dalszy public class ProducentKonsument1 { public static void main(string[] args) { Pojemnik poj = new Pojemnik(); Producent prod = new Producent(poj); Konsument kons = new Konsument(poj); Thread watek1 = new Thread(prod); Thread watek2 = new Thread(kons); watek1.start(); watek2.start(); 35 P-K, wersja I, ciąg dalszy Efekt działania programu: Do pojemnika wstawiana jest wartosc: 1 Z pojemnika pobierana jest wartosc: 1 Do pojemnika wstawiana jest wartosc: 2 Do pojemnika wstawiana jest wartosc: 3 Do pojemnika wstawiana jest wartosc: 4 Z pojemnika pobierana jest wartosc: 4 Do pojemnika wstawiana jest wartosc: 5 Do pojemnika wstawiana jest wartosc: 6 Do pojemnika wstawiana jest wartosc: 7 Do pojemnika wstawiana jest wartosc: 8 Z pojemnika pobierana jest wartosc: 8 Do pojemnika wstawiana jest wartosc: 9 Do pojemnika wstawiana jest wartosc: 10 Z pojemnika pobierana jest wartosc: 10 Z pojemnika pobierana jest wartosc: 10 Z pojemnika pobierana jest wartosc: 10 Z pojemnika pobierana jest wartosc: 10 Z pojemnika pobierana jest wartosc: 10 Z pojemnika pobierana jest wartosc: 10 Z pojemnika pobierana jest wartosc:

19 P-K, wersja II class Pojemnik { private int liczba; private boolean czyjestwartoscwpojemniku = false; public int pobierz() { while (!czyjestwartoscwpojemniku) ; //pusta petla System.out.println("Z pojemnika pobierana jest wartosc: " + liczba); czyjestwartoscwpojemniku = false; return liczba; public void wstaw(int liczba) { while (czyjestwartoscwpojemniku) ; //pusta petla System.out.println("Do pojemnika wstawiana jest wartosc: " + liczba); this.liczba = liczba; czyjestwartoscwpojemniku = true; 37 P-K, wersja II, ciąg dalszy Efekt działania programu: Do pojemnika wstawiana jest wartosc: 1 Z pojemnika pobierana jest wartosc: 1 Do pojemnika wstawiana jest wartosc: 2 Z pojemnika pobierana jest wartosc: 2 Do pojemnika wstawiana jest wartosc: 3 Z pojemnika pobierana jest wartosc: 3 Do pojemnika wstawiana jest wartosc: 4 Z pojemnika pobierana jest wartosc: 4 Do pojemnika wstawiana jest wartosc: 5 Z pojemnika pobierana jest wartosc: 5 Do pojemnika wstawiana jest wartosc: 6 Z pojemnika pobierana jest wartosc: 6 Do pojemnika wstawiana jest wartosc: 7 Z pojemnika pobierana jest wartosc: 7 Do pojemnika wstawiana jest wartosc: 8 Z pojemnika pobierana jest wartosc: 8 Do pojemnika wstawiana jest wartosc: 9 Z pojemnika pobierana jest wartosc: 9 Do pojemnika wstawiana jest wartosc: 10 Z pojemnika pobierana jest wartosc:

20 P-K, wersja III class Pojemnik { private int liczba; private boolean czyjestwartoscwpojemniku = false; synchronized public int pobierz() { if (!czyjestwartoscwpojemniku) try { wait(); catch (InterruptedException e) { System.out.println("Z pojemnika pobierana jest wartosc: " + liczba); czyjestwartoscwpojemniku = false; notify(); return liczba; 39 P-K, wersja III, ciąg dalszy synchronized public void wstaw(int liczba) { if (czyjestwartoscwpojemniku) try { wait(); catch (InterruptedException e) { System.out.println("Do pojemnika wstawiana jest wartosc: + liczba); czyjestwartoscwpojemniku = true; this.liczba = liczba; notify(); 40 20

21 P-K, wersja III, ciąg dalszy Efekt działania programu: Do pojemnika wstawiana jest wartosc: 1 Z pojemnika pobierana jest wartosc: 1 Do pojemnika wstawiana jest wartosc: 2 Z pojemnika pobierana jest wartosc: 2 Do pojemnika wstawiana jest wartosc: 3 Z pojemnika pobierana jest wartosc: 3 Do pojemnika wstawiana jest wartosc: 4 Z pojemnika pobierana jest wartosc: 4 Do pojemnika wstawiana jest wartosc: 5 Z pojemnika pobierana jest wartosc: 5 Do pojemnika wstawiana jest wartosc: 6 Z pojemnika pobierana jest wartosc: 6 Do pojemnika wstawiana jest wartosc: 7 Z pojemnika pobierana jest wartosc: 7 Do pojemnika wstawiana jest wartosc: 8 Z pojemnika pobierana jest wartosc: 8 Do pojemnika wstawiana jest wartosc: 9 Z pojemnika pobierana jest wartosc: 9 Do pojemnika wstawiana jest wartosc: 10 Z pojemnika pobierana jest wartosc: Zjawisko blokady (deadlock) Blokada - sytuacja w której: wątek A: zajął monitor obiektu I, i nie zwalniając go chce zająd monitor obiektu II, wątek B: zajął monitor obiektu II, i nie zwalniając go chce zając monitor obiektu I. Powstanie blokady jest bardzo trudnym do wykrycia błędem logicznym. Języki programowania nie posiadają mechanizmów zapobiegających powstawaniu i/lub usuwaniu blokad - jedynym sposobem ich uniknięcia jest prawidłowe zaprojektowanie algorytmu przetwarzania danych

22 Przykład blokady (1) class Obiekt { void metodapierwsza() { System.out.println("START - metodapierwsza * + Thread.currentThread().getName() + "]"); try { Thread.sleep(10); catch (InterruptedException e) { System.out.println("STOP - metodapierwsza [" + Thread.currentThread().getName() + "]"); 43 Przykład blokady (2) void metodadruga() { System.out.println("START - metodadruga [" + Thread.currentThread().getName() + "]"); try { Thread.sleep(10); catch (InterruptedException e) { System.out.println("STOP - metodadruga [" + Thread.currentThread().getName() + "]"); 44 22

23 Przykład blokady (3) class Watek1 extends Thread { Obiekt o1; Obiekt o2; Watek1(Obiekt o1,obiekt o2,string nazwa) { super(nazwa); this.o1 = o1; this.o2 = o2; 45 Przykład blokady (4) public void run() { synchronized(o1) { o1.metodapierwsza(); synchronized (o2) { o2.metodadruga(); 46 23

24 Przykład blokady (5) class Watek2 extends Thread { Obiekt o1; Obiekt o2; Watek2(Obiekt o1,obiekt o2, String nazwa) { super(nazwa); this.o1 = o1; this.o2 = o2; 47 Przykład blokady (6) public void run() { synchronized (o2) { o2.metodapierwsza(); synchronized (o1) { o1.metodadruga(); 48 24

25 Przykład blokady (7) public class Blokada1 { public static void main(string [] args) { Obiekt obiekt1 = new Obiekt(); Obiekt obiekt2 = new Obiekt(); Thread watek1 = new Watek1(obiekt1, obiekt2,"w1"); Thread watek2 = new Watek2(obiekt1, obiekt2,"w2"); watek1.start(); watek2.start(); 49 Przykład blokady (8) Efekt działania programu: START - metodapierwsza [w1] START - metodapierwsza [w2] STOP - metodapierwsza [w1] STOP - metodapierwsza [w2] 50 25

26 Zjawisko zagłodzenia wątku (starvation) Zagłodzenie - sytuacja, w której oczekujący wątek nie zostaje dopuszczony przez inne wątki do realizacji zdefiniowanego w nim kodu programu. 51 Przykład zagłodzenia wątku(1) class Liczniki { int pole1 = 0; int pole2 = 0; void zwiekszpole1() { pole1++; void zwiekszpole2() { pole2++; synchronized void wyswietlpola() { System.out.println("Pole1 = " + pole1); System.out.println("Pole2 = " + pole2); 52 26

27 Przykład zagłodzenia wątku(2) class Watek1 extends Thread { Liczniki licz; Watek1(Liczniki licz) { this.licz = licz; public void run() { for (int i = 0; i < 1000; i++) { synchronized(licz) { licz.zwiekszpole1(); licz.wyswietlpola(); 53 Przykład zagłodzenia wątku(3) class Watek2 extends Thread { Liczniki licz; Watek2(Liczniki licz) { this.licz = licz; public void run() { for (int i = 0; i < 1000; i++) { synchronized(licz) { licz.zwiekszpole2(); licz.wyswietlpola(); 54 27

28 Przykład zagłodzenia wątku(4) public class Zaglodzenie1 { public static void main(string [] args) { Liczniki licz = new Liczniki(); Thread watek1 = new Watek1(licz); Thread watek2 = new Watek2(licz); watek1.start(); watek2.start(); 55 Przykład zagłodzenia wątku(5) Efekt działania programu: Pole1 = 1000 Pole2 = 0 Pole1 = 1000 Pole2 = 1000 W powyższym przykładzie w trakcie realizacji wątku pierwszego czas pomiędzy zwolnieniem monitora obiektu licz, a jego ponownym zajęciem (w kolejnym obiegu pętli) jest zbyt krótki, aby drugi wątek zdołał zająd wspomniany monitor

29 Przeciwdziałanie zagłodzeniu (1) Mechanizmem nie dopuszczającym do zagłodzenia wątku jest metoda yield zdefiniowana w klasie Thread: public static void yield() jej wywołanie powoduje chwilowe zawieszenie realizacji bieżącego wątku i przydzielenie czasu działania procesora następnemu wątkowi. Stosowanie tej metody gwarantuje, że nie dojdzie do zagłodzenia wątku. 57 Przeciwdziałanie zagłodzeniu (2) class Watek1 extends Thread { Liczniki licz; Watek1(Liczniki licz) { this.licz = licz; public void run() { for (int i = 0; i < 1000; i++) { synchronized(licz) { licz.zwiekszpole1(); if (i % 100 == 0) Thread.yield(); licz.wyswietlpola(); 58 29

30 Przeciwdziałanie zagłodzeniu (3) class Watek2 extends Thread { Liczniki licz; Watek2(Liczniki licz) { this.licz = licz; public void run() { for (int i = 0; i < 1000; i++) { synchronized(licz) { licz.zwiekszpole2(); if (i % 100 == 0) Thread.yield(); licz.wyswietlpola(); 59 Przeciwdziałanie zagłodzeniu (4) Efekt działania programu: Pole1 = 1000 Pole2 = 901 Pole1 = 1000 Pole2 =

31 Semafor w programowaniu Semafor narzędzie synchronizacji, sterujący dostępem do wspólnego zasobu, posiada licznik określający możliwą do wykorzystania liczbę jednostek deficytowego zasobu. 61 Operacje wykonywane na semaforze operacja P P prolaag (holenderski) = probeer te verlagen oznacza próbuj i zmniejsz Operacja wykonywana w chwili, gdy wątek chce zająd pewną liczbę jednostek zasobu Jeśli licznik semafora (liczba wolnych jednostek zasobu) jest większy lub równy od liczby potrzebnych jednostek, to następuje zmniejszenie licznika o liczbę wymaganych przez wątek jednostek. Jeśli wartośd licznika jest mniejsza od liczby potrzebnych jednostek, to wątek zostaje wstrzymany aż do momentu, gdy wartośd licznika odpowiednio wzrośnie

32 Operacje wykonywane na semaforze operacja V V verhoog (holenderski) oznacza zwiększ Operacja wykonywana w chwili, gdy wątek chce zwolnid pewną liczbę jednostek zasobu Następuje zwiększenie wartości licznika o liczbę zwalnianych jednostek zasobu. 63 Implementacja (Silberschatz, Galvin, and Gagne, 1999) public class Semaphore { public Semaphore() { value = 0; public Semaphore(int v) { value = v; public synchronized void P() { /* see next slide */ public synchronized void V() { /* see next slide */ private int value; 64 32

33 Implementacja (Silberschatz, Galvin, and Gagne, 1999) public synchronized void P() { while (value <= 0) { try { wait(); catch (InterruptedException e) { value --; 65 Implementacja (Silberschatz, Galvin, and Gagne, 1999) public synchronized void V() { ++value; notify(); 66 33

34 Klasyfikacja semaforów semafor zliczający licznik przyjmuje wartości całkowite semafor binarny: licznik przyjmuje tylko jedną z dwóch wartości: 0 (zasób zajęty) lub 1 (zasób wolny) licznik może byd tylko zmieniany o 1, operacja V (zwiększanie licznika semafora) wykonana na semaforze o liczniku równym 1 nie powoduje żadnych zmian

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1.

Wielowątkowość. Programowanie w środowisku rozproszonym. Wykład 1. Wielowątkowość Programowanie w środowisku rozproszonym. Wykład 1. Informacje organizacyjne Wymiar godzin: W-30, LAB-15 Zaliczenie wykonanie kilku programów i ich zaliczenie (w trakcie zajęć laboratoryjnych)

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run().

Wątki. Definiowanie wątków jako klas potomnych Thread. Nadpisanie metody run(). Wątki Streszczenie Celem wykładu jest wprowadzenie do obsługi wątków w Javie. Czas wykładu 45 minut. Definiowanie wątków jako klas potomnych Thread Nadpisanie metody run(). class Watek extends Thread public

Bardziej szczegółowo

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ

Java. Wykład. Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ Procesy i wątki Proces posiada samodzielne środowisko wykonawcze. Proces posiada własny zestaw podstawowych zasobów w czasie wykonywania; W szczególności, każdy proces ma własną przestrzeń pamięci. W uproszczeniu

Bardziej szczegółowo

Współbieżność w środowisku Java

Współbieżność w środowisku Java Współbieżność w środowisku Java Wątki i ich synchronizacja Zagadnienia Tworzenie wątków Stany wątków i ich zmiana Demony Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych

Bardziej szczegółowo

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1 Wątki 1. Wątki - wprowadzenie Wątkiem nazywamy sekwencyjny przepływ sterowania w procesie, który wykonuje dany program np. odczytywanie i zapisywanie plików Program Javy jest wykonywany w obrębie jednego

Bardziej szczegółowo

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003

Obliczenia równoległe i rozproszone w JAVIE. Michał Kozłowski 30 listopada 2003 Obliczenia równoległe i rozproszone w JAVIE Michał Kozłowski 30 listopada 2003 Wątki w JAVIE Reprezentacja wątków jako obiektów Uruchamianie i zatrzymywanie wątków Realizacja wątków Ograniczenia Mechanizmy

Bardziej szczegółowo

Język Java wątki (streszczenie)

Język Java wątki (streszczenie) Programowanie współbieżna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Języka Java wątki Autor:

Bardziej szczegółowo

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017

Kurs programowania. Wykład 8. Wojciech Macyna. 10 maj 2017 Wykład 8 10 maj 2017 Współbieżność Watki w JAVA-ie Współbieżność może być realizowana na poziomie systemu operacyjnego (procesy) lub na poziomie aplikacji (watki). W JAVA-ie powszechnie stosuje się watki.

Bardziej szczegółowo

Kurs programowania. Wykład 8. Wojciech Macyna

Kurs programowania. Wykład 8. Wojciech Macyna Wykład 8 Program bez watków, jeden procesor, trzy zadania Program z watkami, jeden procesor, trzy zadania Procesory wielordzeniowe, każde zadanie na osobnym procesorze Trzy zadania uruchomione w watkach

Bardziej szczegółowo

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1

Języki i Techniki Programowania II. Wykład 7. Współbieżność 1 Języki i Techniki Programowania II Wykład 7 Współbieżność 1 Programy, Procesy, Wątki Program to zestaw instrukcji do wykonania, dane do przetworzenia, mechanizmy sterujące (stos) Proces w komputerze to

Bardziej szczegółowo

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4

1 Wątki 1. 2 Tworzenie wątków 1. 3 Synchronizacja 3. 4 Dodatki 3. 5 Algorytmy sortowania 4 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 Temat: Wątki Czym są wątki. Grafika. Proste animacje. Małe podsumowanie materiału.

Bardziej szczegółowo

Aplikacje w Javie- wykład 11 Wątki-podstawy

Aplikacje w Javie- wykład 11 Wątki-podstawy 1 Aplikacje w Javie- wykład 11 Wątki-podstawy Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 http://docs.oracle.com/javase/8/docs/ http://docs.oracle.com/javase/9/docs/

Bardziej szczegółowo

Wątki w Javie. Piotr Tokarski

Wątki w Javie. Piotr Tokarski Wątki w Javie Piotr Tokarski Wprowadzenie Co to są wątki? Co to są wątki? Każdy program ma przynajmniej jeden wątek Co to są wątki? Każdy program ma przynajmniej jeden wątek Wątki są po to, by symulować

Bardziej szczegółowo

Język Java wątki (streszczenie)

Język Java wątki (streszczenie) Programowanie współbieŝna Język Java wątki (streszczenie) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Podstawowe pojęcia: procesy

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 7: Programowanie wielowątkowe w Javie dr inż. Walery Susłow Współbieżność Programy współbieżne (concurrent software) aplikacje potrafiące wykonywać kilka operacji w tym

Bardziej szczegółowo

WSPÓŁBIEŻNOŚĆ. MATERIAŁY:

WSPÓŁBIEŻNOŚĆ. MATERIAŁY: WSPÓŁBIEŻNOŚĆ ZAGADNIENIA: procesy, wątki, synchronizacja, synchronizacja w Java 5.0 blokady, egzekutory, zbiory wątków MATERIAŁY: http://docs.oracle.com/javase/tutorial/essential/concurrency/ HTTP://USERS.UJ.EDU.PL/~CIESLA/

Bardziej szczegółowo

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. W1. Wielowątkowość. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone W1. Wielowątkowość Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np.

Bardziej szczegółowo

Współbieżność w Javie

Współbieżność w Javie Wielowątkowość (obsługa wątków) Tworzenie wątków Stany wątków i ich zmiana Demony Grupy wątków Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych pakiet java.util.concurrent

Bardziej szczegółowo

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1

Programowanie równoległe i rozproszone. Monitory i zmienne warunku. Krzysztof Banaś Programowanie równoległe i rozproszone 1 Programowanie równoległe i rozproszone Monitory i zmienne warunku Krzysztof Banaś Programowanie równoległe i rozproszone 1 Problemy współbieżności Problem producentów i konsumentów: jedna grupa procesów

Bardziej szczegółowo

Współbieżność w Javie

Współbieżność w Javie Wielowątkowość (obsługa wątków) Tworzenie wątków Stany wątków i ich zmiana Demony Grupy wątków Synchronizacja wątków wzajemne wykluczanie oczekiwanie na zmiennych warunkowych pakiet java.util.concurrent

Bardziej szczegółowo

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego

Wątek - definicja. Wykorzystanie kilku rdzeni procesora jednocześnie Zrównoleglenie obliczeń Jednoczesna obsługa ekranu i procesu obliczeniowego Wątki Wątek - definicja Ciąg instrukcji (podprogram) który może być wykonywane współbieżnie (równolegle) z innymi programami, Wątki działają w ramach tego samego procesu Współdzielą dane (mogą operować

Bardziej szczegółowo

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku.

Stworzenie klasy nie jest równoznaczne z wykorzystaniem wielowątkowości. Uzyskuje się ją dopiero poprzez inicjalizację wątku. Laboratorium 7 Wstęp Jednym z podstawowych własności Javy jest wielowątkowość. Wiąże się to z możliwością współbieżnego wykonywania różnych operacji w ramach pojedynczej wirtualnej maszyny Javy (JVM).

Bardziej szczegółowo

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1

Współbieżność i równoległość w środowiskach obiektowych. Krzysztof Banaś Obliczenia równoległe 1 Współbieżność i równoległość w środowiskach obiektowych Krzysztof Banaś Obliczenia równoległe 1 Java Model współbieżności Javy opiera się na realizacji szeregu omawianych dotychczas elementów: zarządzanie

Bardziej szczegółowo

Interfejsy w Java. Przetwarzanie równoległe. Wątki.

Interfejsy w Java. Przetwarzanie równoległe. Wątki. Informatyka I Interfejsy w Java. Przetwarzanie równoległe. Wątki. dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Interfejsy w Java Pojęcie interfejsu w programowaniu Deklaracja

Bardziej szczegółowo

Programowanie współbieżne i rozproszone

Programowanie współbieżne i rozproszone Programowanie współbieżne i rozproszone WYKŁAD 1 dr inż. Literatura ogólna Ben-Ari, M.: Podstawy programowania współbieżnego i rozproszonego. Wydawnictwa Naukowo-Techniczne, Warszawa, 2009. Czech, Z.J:

Bardziej szczegółowo

Programowanie wielowątkowe. Tomasz Borzyszkowski

Programowanie wielowątkowe. Tomasz Borzyszkowski Programowanie wielowątkowe Tomasz Borzyszkowski Wątki a procesy Jako jeden z niewielu języków programowania Java udostępnia użytkownikowi mechanizmy wspierające programowanie wielowątkowe. Program wielowątkowy

Bardziej szczegółowo

Programowanie współbieżne Wykład 5. Rafał Skinderowicz

Programowanie współbieżne Wykład 5. Rafał Skinderowicz Programowanie współbieżne Wykład 5 Rafał Skinderowicz Monitory motywacje Mechanizmy synchronizacji takie jak blokady (zamki) semafory pozwalają efektywnie rozwiązywać dostępu do współdzielonych zasobów,

Bardziej szczegółowo

Java. Programowanie Obiektowe Mateusz Cicheński

Java. Programowanie Obiektowe Mateusz Cicheński Java Programowanie Obiektowe Mateusz Cicheński Wielowątkowość Proces a wątek? Thread vs Runnable sleep(), interrupt(), join() Problemy wielowątkowości Obiekty niemodyfikowalne (immutable) Serializacja

Bardziej szczegółowo

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 5 Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wady semaforów Jeden z pierwszych mechanizmów synchronizacji Generalnie jest to mechanizm bardzo

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post

Bardziej szczegółowo

Programowanie współbieżne Laboratorium nr 11

Programowanie współbieżne Laboratorium nr 11 Programowanie współbieżne Laboratorium nr 11 Wykonywane w danym momencie programy nazwano procesami [1] - izolowanymi, niezależnie wykonywanymi programami, dla których system operacyjny przydzielał pamięć,

Bardziej szczegółowo

Programowanie współbieżne Wykład 2. Rafał Skinderowicz

Programowanie współbieżne Wykład 2. Rafał Skinderowicz Programowanie współbieżne Wykład 2 Rafał Skinderowicz Program współbieżny a sekwencyjny Program zapis algorytmu, ciąg instrukcji do wykonania przez procesor: statyczny sekwencja instrukcji przekształcających

Bardziej szczegółowo

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska

Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów. Iwona Kochańska Programowanie współbieżne Wykład 10 Synchronizacja dostępu do współdzielonych zasobów Iwona Kochańska Mechanizm synchronizacji wątków/procesów Wykorzystanie semaforów zapobiega niedozwolonemu wykonaniu

Bardziej szczegółowo

Programowanie wielowątkowe: podstawowe koncepcje, narzędzia w Javie. J. Starzyński, JiMP2, rok akad. 2005/2006

Programowanie wielowątkowe: podstawowe koncepcje, narzędzia w Javie. J. Starzyński, JiMP2, rok akad. 2005/2006 Programowanie wielowątkowe: podstawowe koncepcje, narzędzia w Javie J. Starzyński, JiMP2, rok akad. 2005/2006 Tematyka Wprowadzenie Podstawowe pojęcia Tworzenie i uruchamianie wątków Zatrzymywanie wątków

Bardziej szczegółowo

Systemy Rozproszone - Ćwiczenie 4

Systemy Rozproszone - Ćwiczenie 4 Systemy Rozproszone - Ćwiczenie 4 1 Synchronizacja wątków: myjnia samochodowa Poniżej znajduje się przykład ilustrujący klasyczny problem synchronizacji wątków. Obiekt klasy Car jest współdzielony przez

Bardziej szczegółowo

Aplikacja wielowątkowa prosty komunikator

Aplikacja wielowątkowa prosty komunikator Aplikacja wielowątkowa prosty komunikator Klient 0 (host 1) Wątek 0 Komponent serwera Wątek pochodny 3.1 Klient 1 (host 2) Wątek 1 Komponent serwera Wątek pochodny 3.2 Host 4 Serwer Wątek 3 Klient 2 (host

Bardziej szczegółowo

6.1 Pojęcie wątku programu 6.2 Klasy Timer, TimerTask 6.3 Klasa Thread 6.4 Synchronizacja pracy wątków 6.5 Grupowanie wątków

6.1 Pojęcie wątku programu 6.2 Klasy Timer, TimerTask 6.3 Klasa Thread 6.4 Synchronizacja pracy wątków 6.5 Grupowanie wątków 6. Wątki 6.1 Pojęcie wątku programu 6.2 Klasy Timer, TimerTask 6.3 Klasa Thread 6.4 Synchronizacja pracy wątków 6.5 Grupowanie wątków W. Kasprzak: Programowanie zdarzeniowe 6-1 6.1 Wątki programu 1) Pojęcie

Bardziej szczegółowo

Przetwarzanie równoległe i współbieżne

Przetwarzanie równoległe i współbieżne Wątki Threads Wątki (Threads) Concurrent programming is like stepping into an entirely new world and learning a new programming language!!! (grząski grunt) Unikaj jeśli możesz rozwiazać problem! Implementacja

Bardziej szczegółowo

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację. J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.

Bardziej szczegółowo

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1

Obiektowe programowanie rozproszone Java RMI. Krzysztof Banaś Systemy rozproszone 1 Obiektowe programowanie rozproszone Java RMI Krzysztof Banaś Systemy rozproszone 1 Java RMI Mechanizm zdalnego wywołania metod Javy (RMI Remote Method Invocation) posiada kilka charakterystycznych cech,

Bardziej szczegółowo

Dokumentacja do API Javy.

Dokumentacja do API Javy. Dokumentacja do API Javy http://java.sun.com/j2se/1.5.0/docs/api/ Klasy i obiekty Klasa jest to struktura zawierająca dane (pola), oraz funkcje operujące na tych danych (metody). Klasa jest rodzajem szablonu

Bardziej szczegółowo

JAVA W SUPER EXPRESOWEJ PIGUŁCE

JAVA W SUPER EXPRESOWEJ PIGUŁCE JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie

Bardziej szczegółowo

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Wielowątkowość mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Uruchomienie programu powoduje stworzenie nowego procesu przez system operacyjny. Proces wykonywany program wraz

Bardziej szczegółowo

Systemy operacyjne. Zajęcia 11. Monitory

Systemy operacyjne. Zajęcia 11. Monitory Systemy operacyjne. Zajęcia 11. Monitory 1. Monitor to mechanizm zamykający całą pamięć wspólną i synchronizację w pojedynczym module. 2. Monitor posiada całą pamięć wspólną jako część 'prywatną': dostępu

Bardziej szczegółowo

Multimedia JAVA. Historia

Multimedia JAVA. Historia Multimedia JAVA mgr inż. Piotr Odya piotrod@sound.eti.pg.gda.pl Historia 1990 rozpoczęcie prac nad nowym systemem operacyjnym w firmie SUN, do jego tworzenia postanowiono wykorzystać nowy język programowania

Bardziej szczegółowo

Monitory. Jarosław Kuchta

Monitory. Jarosław Kuchta Monitory Jarosław Kuchta Co to jest monitor Monitor to zebrane w jednej konstrukcji programowej zmienne i operacje na tych zmiennych. Część tych operacji jest udostępnianych na zewnątrz monitora. Tylko

Bardziej szczegółowo

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej

Interfejsy. Programowanie obiektowe. Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej Programowanie obiektowe Interfejsy Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Interfejsy Autor: Paweł Rogaliński Instytut Informatyki,

Bardziej szczegółowo

1 Atrybuty i metody klasowe

1 Atrybuty i metody klasowe 1 Atrybuty i metody klasowe Składowe klasowe (statyczne) Każdy obiekt klasy posiada własny zestaw atrybutów. Metody używają atrybutów odpowiedniego obiektu. Czasem potrzeba atrybutów wspólnych dla wszystkich

Bardziej szczegółowo

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Lemay, Naughton R. Cadenhead Java Podręcznik 2 dla kaŝdego Języka Programowania Java Linki Krzysztof Boone oprogramowania

Bardziej szczegółowo

Wątki (Threads) Potrzeby. Przetwarzanie równoległe i współbieŝne. Cechy programowania wątkowego. Concurrent programming is like

Wątki (Threads) Potrzeby. Przetwarzanie równoległe i współbieŝne. Cechy programowania wątkowego. Concurrent programming is like Wątki (Threads) Concurrent programming is like stepping into an entirely new world and learning a new programming language!!! (grząski grunt) Unikaj jeśli moŝesz! Oparte są zwykle na wielozadaniowym SO

Bardziej szczegółowo

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html

Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Dr inż. Zofia Kruczkiewicz wykład 4 Programowanie aplikacji internetowych, wykład 4 1 1. Zadania aplikacji rozproszonych obiektów

Bardziej szczegółowo

Java: interfejsy i klasy wewnętrzne

Java: interfejsy i klasy wewnętrzne Java: interfejsy i klasy wewnętrzne Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 INTERFEJSY Interfejs to opis co klasa implementująca dany interfejs powinna robić, ale bez określania

Bardziej szczegółowo

Programowanie współbieżne Laboratorium nr 12

Programowanie współbieżne Laboratorium nr 12 Programowanie współbieżne Laboratorium nr 12 Uwaga!!! Wyniki uruchomionych programów mogą zależeć od sprzętu (ilość procesorów, rdzeni itp.), systemu operacyjnego, obciążenia systemu operacyjnego, ilości

Bardziej szczegółowo

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object

Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Java: kilka brakujących szczegółów i uniwersalna nadklasa Object Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU Konstrukcja obiektów Niszczenie obiektów i zwalnianie zasobów

Bardziej szczegółowo

Java SE, Laboratorium nr 8 Wątki

Java SE, Laboratorium nr 8 Wątki Java SE, Laboratorium nr 8 Wątki Wątki w Jawie umożliwiają współbieżność operacji. Wątki umożliwiają równoległe wykonywanie instrukcji. Wątki wymagają mniej zasobów niż osobne procesy. Wynika to z tego,

Bardziej szczegółowo

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji. JAVA Java jest wszechstronnym językiem programowania, zorientowanym obiektowo, dostarczającym możliwość uruchamiania apletów oraz samodzielnych aplikacji. Java nie jest typowym kompilatorem. Źródłowy kod

Bardziej szczegółowo

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3();

1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {}; static public void m2() {}; void abstract m3(); 1. Co można powiedzieć o poniższym kodzie? public interface I { void m1() {; static public void m2() {; void abstract m3(); default static void m4() {; a) Poprawnie zadeklarowano metodę m1() b) Poprawnie

Bardziej szczegółowo

W Javie wątki są obiektami zdefiniowanymi za pomocą specjalnego rodzaju klas.

W Javie wątki są obiektami zdefiniowanymi za pomocą specjalnego rodzaju klas. WspółbieŜność W programowaniu sekwencyjnym, kaŝdy program ma początek, sekwencje instrukcji do wykonania i koniec. W kaŝdym momencie działania programu moŝemy wskazać miejsce, w którym znajduje się sterowanie.

Bardziej szczegółowo

Algorytmy z powrotami. Algorytm minimax

Algorytmy z powrotami. Algorytm minimax Algorytmy z powrotami. Algorytm minimax Algorytmy i struktury danych. Wykład 7. Rok akademicki: 2010/2011 Algorytm z powrotami rozwiązanie problemu budowane jest w kolejnych krokach, po stwierdzeniu (w

Bardziej szczegółowo

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków mgr inż. Maciej Lasota Version 1.0, 13-05-2017 Spis treści Wyjątki....................................................................................

Bardziej szczegółowo

Zaawansowany kurs języka Python

Zaawansowany kurs języka Python Wykład 6. 6 listopada 2015 Plan wykładu Callable objects 1 Callable objects 2 3 Plan wykładu Callable objects 1 Callable objects 2 3 Callable objects Wszystko jest obiektem. Callable objects Wszystko jest

Bardziej szczegółowo

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)?

1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)? 1. Co można powiedzieć o poniższym kodzie (zakładając, że zaimportowano wszystkie niezbędne klasy)? public static void test1() { Object[] o = new Object[] { "1", "2", "3" ; List l = new ArrayList(Arrays.asList(o));

Bardziej szczegółowo

Programowanie obiektowe zastosowanie języka Java SE

Programowanie obiektowe zastosowanie języka Java SE Programowanie obiektowe zastosowanie języka Java SE Wstęp do programowania obiektowego w Javie Autor: dr inŝ. 1 Java? Java język programowania obiektowo zorientowany wysokiego poziomu platforma Javy z

Bardziej szczegółowo

Języki i metody programowania Java INF302W Wykład 2 (część 1)

Języki i metody programowania Java INF302W Wykład 2 (część 1) Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja

Bardziej szczegółowo

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 4. Synchronizacja procesów (i wątków) cześć I. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 4 Synchronizacja procesów (i wątków) cześć I Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Potrzeba synchronizacji Procesy wykonują się współbieżnie. Jeżeli w 100% są

Bardziej szczegółowo

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016 Wykład 2 17 marca 2016 Dziedziczenie Klasy bazowe i potomne Dziedziczenie jest łatwym sposobem rozwijania oprogramowania. Majac klasę bazowa możemy ja uszczegółowić (dodać nowe pola i metody) nie przepisujac

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 5 Marcin Młotkowski 23 marca 2017 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 50 Historia Początkowe założenia Projekt OAK Sterowanie urządzeniami

Bardziej szczegółowo

WIELOWĄTKOWOŚĆ. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

WIELOWĄTKOWOŚĆ. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska WIELOWĄTKOWOŚĆ Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska Wydajność 2 Do 2005 roku wydajność komputerów poprawiano zwiększając częstotliwość taktowania procesora 1995: Pentium

Bardziej szczegółowo

Zaawansowane programowanie w C++ (PCP)

Zaawansowane programowanie w C++ (PCP) Wykład 10 - boost Thread. 8 czerwca 2007 Równoległość bardzo wolna reakcja człowieka wolne urządzenia wejścia - wyjścia (np. drukarki) bardzo szybkie procesory można przeprowadzać obliczenia podczas obsługi

Bardziej szczegółowo

Wywoływanie metod zdalnych

Wywoływanie metod zdalnych Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia

Bardziej szczegółowo

1. Co można powiedzieć o poniższym kodzie?

1. Co można powiedzieć o poniższym kodzie? 1. Co można powiedzieć o poniższym kodzie? void m(int a) { int m(string s){return Integer.parseInt(s); String m(int a){ return Integer.toString(a); a) Jego kompilacja powiedzie się b) Jego kompilacja nie

Bardziej szczegółowo

Polimorfizm, metody wirtualne i klasy abstrakcyjne

Polimorfizm, metody wirtualne i klasy abstrakcyjne Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,

Bardziej szczegółowo

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wyjątki Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut. Wydaje się, że żaden użytkownik oprogramowania nie lubi, kiedy stosowany program nagle zawiesza się,

Bardziej szczegółowo

Programowanie współbieżne Wykład 7. Iwona Kochaoska

Programowanie współbieżne Wykład 7. Iwona Kochaoska Programowanie współbieżne Wykład 7 Iwona Kochaoska Poprawnośd programów współbieżnych Właściwości związane z poprawnością programu współbieżnego: Właściwośd żywotności - program współbieżny jest żywotny,

Bardziej szczegółowo

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java. język programowania obiektowego. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java język programowania obiektowego Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak 1 Język Java Język Java powstał w roku 1995 w firmie SUN Microsystems Java jest językiem: wysokiego

Bardziej szczegółowo

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna

Język JAVA podstawy. Wykład 3, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 3, część 3 1 Język JAVA podstawy Plan wykładu: 1. Konstrukcja kodu programów w Javie 2. Identyfikatory, zmienne 3. Typy danych 4. Operatory, instrukcje sterujące instrukcja warunkowe,

Bardziej szczegółowo

Generatory. Michał R. Przybyłek

Generatory. Michał R. Przybyłek Generatory Michał R. Przybyłek 1 Wstęp Generator to potencjalnie nieskończony, leniwie obliczany, ciąg wartości. W zależności od tego, która ze stron decyduje o wygenerowaniu nowej wartości wyróżniamy

Bardziej szczegółowo

Język Java część 2 (przykładowa aplikacja)

Język Java część 2 (przykładowa aplikacja) Programowanie obiektowe Język Java część 2 (przykładowa aplikacja) Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski @ pwr.wroc.pl Java Java przykładowa

Bardziej szczegółowo

7 Pewne uzupełnienia Przepływ sterowania Układacze... 6

7 Pewne uzupełnienia Przepływ sterowania Układacze... 6 Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 7 Pewne uzupełnienia 5 7.1 Przepływ sterowania......................... 5 7.2 Układacze...............................

Bardziej szczegółowo

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016

Kurs programowania. Wykład 1. Wojciech Macyna. 3 marca 2016 Wykład 1 3 marca 2016 Słowa kluczowe języka Java abstract, break, case, catch, class, const, continue, default, do, else, enum, extends, final, finally, for, goto, if, implements, import, instanceof, interface,

Bardziej szczegółowo

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p.

Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni. Wykład 3. Karol Tarnowski A-1 p. Techniki programowania INP001002Wl rok akademicki 2018/19 semestr letni Wykład 3 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji Abstrakcja funkcyjna Struktury Klasy hermetyzacja

Bardziej szczegółowo

Programowanie współbieżne i rozproszone w języku Java

Programowanie współbieżne i rozproszone w języku Java Programowanie współbieżne i rozproszone w języku Java Uniwersytet Marii Curie-Skłodowskiej Wydział Matematyki, Fizyki i Informatyki Instytut Informatyki Programowanie współbieżne i rozproszone w języku

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 6 Instrukcja 6 Laboratorium 8 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

Enkapsulacja, dziedziczenie, polimorfizm

Enkapsulacja, dziedziczenie, polimorfizm 17 grudnia 2008 Spis treści I Enkapsulacja 1 Enkapsulacja 2 Spis treści II Enkapsulacja 3 Czym jest interfejs Jak definuje się interfejs? Rozszerzanie interfejsu Implementacja interfejsu Częściowa implementacja

Bardziej szczegółowo

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1

Przetwarzanie wielowątkowe przetwarzanie współbieżne. Krzysztof Banaś Obliczenia równoległe 1 Przetwarzanie wielowątkowe przetwarzanie współbieżne Krzysztof Banaś Obliczenia równoległe 1 Problemy współbieżności wyścig (race condition) synchronizacja realizowana sprzętowo (np. komputery macierzowe)

Bardziej szczegółowo

Wykład 4: Klasy i Metody

Wykład 4: Klasy i Metody Wykład 4: Klasy i Metody Klasa Podstawa języka. Każde pojęcie które chcemy opisać w języku musi być zawarte w definicji klasy. Klasa definiuje nowy typ danych, których wartościami są obiekty: klasa to

Bardziej szczegółowo

Języki i metody programowania Java. Wykład 2 (część 2)

Języki i metody programowania Java. Wykład 2 (część 2) Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego

Bardziej szczegółowo

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r.

Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie w Javie 1 Wykład i Ćwiczenia 3 Programowanie obiektowe w Javie cd. Płock, 16 października 2013 r. Programowanie obiektowe Programowanie obiektowe (z ang. object-oriented programming), to

Bardziej szczegółowo

Wykład 6: Dziedziczenie

Wykład 6: Dziedziczenie Wykład 6: Dziedziczenie Dziedziczenie Jeden z filarów obiektowości. Budowa jednej klasy na bazie drugiej, przez dodawanie/przesłanianie jej składowych: nad-klasa klasa bazowa pod-klasa klasa pochodna od

Bardziej szczegółowo

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019

Kurs programowania. Wykład 3. Wojciech Macyna. 22 marca 2019 Wykład 3 22 marca 2019 Klasy wewnętrzne Klasa wewnętrzna class A {... class B {... }... } Klasa B jest klasa wewnętrzna w klasie A. Klasa A jest klasa otaczajac a klasy B. Klasy wewnętrzne Właściwości

Bardziej szczegółowo

Aplikacje RMI Lab4

Aplikacje RMI   Lab4 Aplikacje RMI https://docs.oracle.com/javase/tutorial/rmi/overview.html Lab4 Dr inż. Zofia Kruczkiewicz Programowanie aplikacji internetowych 1 1. Koncepcja budowy aplikacji RMI (aplikacja rozproszonych

Bardziej szczegółowo

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7

Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7 Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji

Bardziej szczegółowo

4.1 Napisz kod, w którym definiujesz, tworzysz oraz uruchamiasz wątki z uŝyciem klas java.lang.thread oraz java.lang.runnable.

4.1 Napisz kod, w którym definiujesz, tworzysz oraz uruchamiasz wątki z uŝyciem klas java.lang.thread oraz java.lang.runnable. WĄTKI 4.1 Napisz kod, w którym definiujesz, tworzysz oraz uruchamiasz wątki z uŝyciem klas java.lang.thread oraz java.lang.runnable. 4.2 Opisz stany w jakich wątek moŝe się znajdować oraz opisz sytuacje,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2: Wstęp do języka Java 3/4/2013 S.Deniziak: Programowanie obiektowe - Java 1 Cechy języka Java Wszystko jest obiektem Nie ma zmiennych globalnych Nie ma funkcji globalnych

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Przykład symulacji Paweł Daniluk Wydział Fizyki Jesień 2012 P. Daniluk (Wydział Fizyki) PO w. XII Jesień 2012 1 / 18 Symulacja sieci kolejowej A B C Zasady Na torze

Bardziej szczegółowo

Dawid Gierszewski Adam Hanasko

Dawid Gierszewski Adam Hanasko Dawid Gierszewski Adam Hanasko Chcemy stworzyć klasę w której możemy przechowywać dwie zmienne dowolnych typów Tworzymy tyle różnych klas ile potrzeba: Class ParaInt{ int pierwszy; Int drugi; Class ParaButow{

Bardziej szczegółowo

Aplikacja wielow tkowa prosty komunikator

Aplikacja wielow tkowa prosty komunikator Aplikacja wielow tkowa prosty komunikator Klient 0 (host 1) W tek 0 Komponent serwera W tek pochodny 3.1 Klient 1 (host 2) W tek 1 Komponent serwera W tek pochodny 3.2 Host 4 Serwer W tek 3 Klient 2 (host

Bardziej szczegółowo

Metody Metody, parametry, zwracanie wartości

Metody Metody, parametry, zwracanie wartości Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca

Bardziej szczegółowo

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System

Bardziej szczegółowo