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

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

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

Transkrypt

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 wątku Pamięć programu jest wspólna dla wątków potomnych, każdy z nich ma własny stos Zablokowanie jednego z wątków nie zawiesza działania innych wątków Wznowienie działania wątku następuje od miejsca zawieszenia System Windows przydziela cyklicznie czas procesora wątkom w kolejności wynikającej z ich priorytetów (taka sytuacja występuje np. w komputerach jednoprocesorowych) Wiele działających wątków powoduje, że program działa asynchronicznie (nie ma pojedynczej pętli zdarzeń) Synchronizacja wykonywanych metod tego danego obiektu przez wątki jest możliwa dzięki monitorowi, który posiada każdy z obiektów. Dodanie słowa synchronized do oznaczenia nazwy metody tego obiektu powoduje, że jeśli jeden z wątków wykonuje taką metodę, to żaden z pozostałych wątków nie może wykonać tej i innej synchronizowanej metody tego obiektu. Wątki mogą się porozumiewać za pomocą metod wait(), notify() i notifyall() wspólnie używanego obiektu wątek może wykonywać synchronizowaną metodę tego obiektu i po wykonaniu w niej metody wait() zostaje uśpiony do chwili, kiedy inny wątek obudzi go wykonując metodę notify() wywołanej w metodzie synchronizowanej tego samego obiektu. Jeśli więcej wątków zostało uśpionych po wykonaniu metody wait() tego samego obiektu, inny obiekt wywołując metodę notifyall() może je obudzić w kolejności wynikającej z priorytetów tych wątków. Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 1

2 2. Tworzenie wątków klasa Thread oraz interfejs Runnable 1. Wątki są reprezentowane przez obiekty typu Thread. Klasa Thread zawiera metody niezbędne do zarządzania wątkami. Obiekt typu Thread jest obiektem sterującym wątkiem. Klasa Thread ma metody, które uruchamiają, usypiają, zawieszają oraz zatrzymują wątek 2. Tworzenie wątku polega na tworzeniu nowego egzemplarza klasy Thread. Obiekt typu Thread uruchamia obiekt wątkowy implementujący interfejs Runnable, który definiuje metodę run(): 2.1. Obiektem wątkowym może być obiekt przekazywany do konstruktora obiektu Thread public Thread(Runnable target) { init(null, target, "Thread-" + nextthreadnum(), 0); 2.2. Obiektem wątkowym może być instancja klasy Thread public Thread(){ init(null, null, "Thread-" + nextthreadnum(), 0); 2.3. Obiektem wątkowym może być instancja następcy klasy Thread public NowyThread() { init(null, null, "Thread-" + nextthreadnum(), 0) ; 3. Po uruchomieniu metody start obiektu klasy Thread lub jej następcy uruchamiana jest metoda run() obiektu wątkowego Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 2

3 Przykład 1 ( p. 2.1 ) Obiekt wątkowy typu Wątek1 implementuje interfejs Runnable class Watek1 implements Runnable { public void run() { { System.out.println("Watek potomny dziala"); Thread.sleep(4000); catch(interruptedexception e) { System.out.println("Przerwanie watku potomnego"); System.out.println("Watek potomny zakonczyl dzialanie"); public class p6_1 { void demo() { Thread watekglowny = Thread.currentThread(); System.out.println("Watek biezacy " + watekglowny); Watek1 obiekt = new Watek1(); Thread watekpotomny = new Thread(obiekt, "Watek potomny"); watekpotomny.start(); { Thread.sleep(6000); catch(interruptedexception e) { System.out.println("Przerwanie watku glownego"); System.out.println("Watek glowny zakonczyl dzialanie"); public static void main (String argd[]) { p6_1 p = new p6_1 (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 3

4 Przykład 2 ( p.2.3 ) Obiekt wątkowy typu Wątek1 dziedziczy po klasie Thread przesłania metodę run, którą dziedziczy po klasie Thread. class Watek1 extends Thread Metoda run w klasie Thread jest wynikiem implementowania { public void run() interfejsu Runnable przez klasę typu Thread { { System.out.println("Watek potomny dziala"); Thread.sleep(400); catch(interruptedexception e) { System.out.println("Przerwanie watku potomnego"); System.out.println("Watek potomny zakonczyl dzialanie"); public class p6_1 { void demo() { Thread watekglowny = Thread.currentThread(); System.out.println("Watek biezacy " + watekglowny); Watek1 watekpotomny = new Watek1(); watekpotomny.start(); { Thread.sleep(600); catch(interruptedexception e) { System.out.println("Przerwanie watku glownego"); System.out.println("Watek glowny zakonczyl dzialanie"); public static void main (String argd[]) { p6_1 p = new p6_1 (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 4

5 3. Synchronizacja wątków (blokowanie dostępu wątków do ważnych fragmentów programu) słowo kluczowe synchronized 1) Przykład 3 brak synchronizacji wywołania metody wyswietl import java.util.*; import java.io.*; import java.lang.*; class Zasob { void wyswietl(string m, int n) { System.out.print("< "+m); { Thread.sleep(4000); catch(exception e) { System.out.println(n+">"); class Watek2 implements Runnable { String s; Zasob z; int num; public Watek2(Zasob zasob, String lan, int n) { s=lan; z= zasob; num=n; public void run() { z.wyswietl(s, num); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 5

6 public class p6_2 { void demo() { Zasob zasob = new Zasob(); Watek2 obiekt1 = new Watek2(zasob, "Watek1 ",1); Thread watek1 = new Thread(obiekt1); watek1.start(); Watek2 obiekt2 = new Watek2(zasob, "Watek2 ",2); Thread watek2 = new Thread(obiekt2); watek2.start(); Watek2 obiekt3 = new Watek2(zasob, "Watek3 ",3); Thread watek3 = new Thread(obiekt3); watek3.start(); public static void main (String argd[]) { p6_2 p = new p6_2 (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 6

7 2) Przykład 4 synchronizacja wywołania metody wyswietl import java.util.*; import java.io.*; import java.lang.*; class Zasob1 { synchronized void wyswietl(string m, int n) { System.out.print("< "+m); { Thread.sleep(4000); catch(exception e) { System.out.println(n+">"); class Watek2 implements Runnable { String s; Zasob1 z; int num; public Watek2(Zasob1 zasob, String lan, int n) {s = lan; z = zasob; num = n; public void run() { z.wyswietl(s,num); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 7

8 public class p6_3 { void demo() { Zasob1 zasob = new Zasob1(); Watek2 obiekt1 = new Watek2(zasob, "Watek1 ",1); Thread watek1 = new Thread(obiekt1); watek1.start(); Watek2 obiekt2 = new Watek2(zasob, "Watek2 ",2); Thread watek2 = new Thread(obiekt2); watek2.start(); Watek2 obiekt3 = new Watek2(zasob, "Watek3 ",3); Thread watek3 = new Thread(obiekt3); watek3.start(); public static void main (String argd[]) { p6_3 p = new p6_3 (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 8

9 Przykład 5 - brak synchronizacji wywołania metody wyswietl. Każdy wątek, który jako pierwszy kończy metodę wyswietl (w przykładzie wątek 2) oraz pozostałe wątki, używają abutu wspólnego zasobu zmienionego przez ostatni wątek, który rozpoczął wykonywanie tej metody (w przykładzie wątek 3). Każdy wątek posiada własną zmienną lokalną wywołuje własny egzemplarz metody i posiada własny stos. class Zasob { int a=10; //abut wspólnego zasobu void wyswietl(string m, int n) { int b=3; //zmienna lokalna wspólnego zasobu b--; a--; System.out.print("< "+m); { Thread.sleep(4000); catch(exception e) { System.out.println(("numer watku:"+n+", abut wspolnego zasobu:" +a+ ", zmienna lokalna wspolnego zasobu:"+b)+" >"); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 9

10 class Watek2 implements Runnable { String s; Zasob z; int num; public Watek2(Zasob zasob, String lan, int n) { s = lan; z= zasob; num=n; public void run() { z.wyswietl(s,num); public class Watki_bez_synchronizacji { void demo() { Zasob zasob = new Zasob(); Watek2 obiekt1 = new Watek2(zasob, "Watek1 ",1); Thread watek1 = new Thread(obiekt1); watek1.start(); Watek2 obiekt2 = new Watek2(zasob, "Watek2 ",2); Thread watek2 = new Thread(obiekt2); watek2.start(); Watek2 obiekt3 = new Watek2(zasob, "Watek3 ",3); Thread watek3 = new Thread(obiekt3); watek3.start(); public static void main (String argd[]) { Watki_bez_synchronizacji p = new Watki_bez_synchronizacji (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 10

11 Przykład 6 - synchronizacja wywołania metody wyświetl. Każdy wątek, który wykonuje metodę wyswietl (w przykładzie wątek 2), używa abutu wspólnego zasobu zmienionego przez ostatni wątek, który przed nim zakończył wykonywanie tej metody. Każdy wątek posiada własną zmienną lokalną wywołuje własny egzemplarz metody i posiada własny stos. class Zasob { int a=10; //abut wspólnego zasobu synchronized void wyswietl(string m, int n) { int b=3; //zmienna lokalna wspólnego zasobu b--; a--; System.out.print("< "+m); { Thread.sleep(4000); catch(exception e) { System.out.println(("numer watku:"+n+", abut wspolnego zasobu:" +a+ ", zmienna lokalna wspolnego zasobu:"+b)+" >"); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 11

12 class Watek2 implements Runnable { String s; Zasob z; int num; public Watek2(Zasob zasob, String lan, int n) { s = lan; z= zasob; num=n; public void run() { z.wyswietl(s,num); public class Watki_z_synchronizacja { void demo() { Zasob zasob = new Zasob(); Watek2 obiekt1 = new Watek2(zasob, "Watek1 ",1); Thread watek1 = new Thread(obiekt1); watek1.start(); Watek2 obiekt2 = new Watek2(zasob, "Watek2 ",2); Thread watek2 = new Thread(obiekt2); watek2.start(); Watek2 obiekt3 = new Watek2(zasob, "Watek3 ",3); Thread watek3 = new Thread(obiekt3); watek3.start(); public static void main (String argd[]) { Watki_bez_synchronizacji p = new Watki_bez_synchronizacji (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 12

13 Przykład 7 - synchronizacja wywołania metody wyświetl. Każdy wątek, który wykonuje metodę wyswietl (w przykładzie wątek 2) w metodzie run w bloku synchronizowanym synchronized (obiekt) instrukcja używa abutu wspólnego zasobu zmienionego przez ostatni wątek, który przed nim zakończył wykonywanie tej metody. Każdy wątek posiada własną zmienną lokalną wywołuje własny egzemplarz metody i posiada własny stos. Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 13

14 class Zasob { int a=10; //abut wspólnego zasobu void wyswietl(string m, int n) { int b=3; //zmienna lokalna wspólnego zasobu b--; a--; System.out.print("< "+m); { Thread.sleep(4000); catch(exception e) { System.out.println(("numer watku:"+n+", abut wspolnego zasobu:" +a+ ", zmienna lokalna wspolnego zasobu:"+b)+" >"); class Watek2 implements Runnable { String s; Zasob z; int num; public Watek2(Zasob zasob, String lan, int n) { s = lan; z= zasob; num=n; public void run() { synchronized(z) { z.wyswietl(s,num); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 14

15 public class Watki_z_synchronizacja { void demo() { Zasob zasob = new Zasob(); Watek2 obiekt1 = new Watek2(zasob, "Watek1 ",1); Thread watek1 = new Thread(obiekt1); watek1.start(); Watek2 obiekt2 = new Watek2(zasob, "Watek2 ",2); Thread watek2 = new Thread(obiekt2); watek2.start(); Watek2 obiekt3 = new Watek2(zasob, "Watek3 ",3); Thread watek3 = new Thread(obiekt3); watek3.start(); public static void main (String argd[]) { Watki_bez_synchronizacji p = new Watki_bez_synchronizacji (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 15

16 4. Porozumiewanie się wątków metody wait, notify notifyall 1) Przykład 7 braku zachowania kolejności wykonania metody wyswietl przez 2 wątki import java.util.*; import java.io.*; import java.lang.*; class Zasob2 { int num; synchronized void wyswietl(string m, int n) { System.out.print("< "+m); num = n; System.out.println(num+">"); class Watek3 implements Runnable { String s; Zasob2 z; int num; public Watek3(Zasob2 zasob, String lan, int n) {s = lan; z = zasob; num = n; Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 16

17 public void run() { while (true) { z.wyswietl(s, num++); { Thread.sleep(400); catch(exception e) { /*koniec run*/ /*koniec Watek3*/ class Watek4 extends Watek3 { public Watek4(Zasob2 zasob, String lan, int n) { super(zasob, lan, n); public void run() { while (true) { z.wyswietl(s,num); { Thread.sleep(1000); catch(exception e) { /*koniec run*/ /*koniec Watek3*/ Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 17

18 public class p6_4 { void demo() { Zasob2 zasob = new Zasob2(); Watek3 obiekt1 = new Watek3(zasob, "Watek1 ", 1); Thread watek3 = new Thread(obiekt1); watek3.start(); Watek4 obiekt2 = new Watek4(zasob, "Watek2 ", 2); Thread watek4 = new Thread(obiekt2); watek4.start(); public static void main (String argd[]) { p6_4 p = new p6_4 (); p.demo(); Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 18

19 2) Przykład zachowania kolejności wykonania metody wyswietl przez 2 wątki Ten sam obiekt, używany przez dwa wątki, posiada tzw. monitor. Wywołanie metody wait() tego obiektu w innej metodzie synchronizowanej tego obiektu przez wątek spowoduje usunięcie tego wątku z monitora obiektu (uśpienie wątku) i zawieszenie wykonania metody synchronizowanej. Jeśli inny wątek, znajdujący się monitorze tego obiektu wywoła metodę notify() tego obiektu (w metodzie synchronizowanej tego obiektu), spowoduje powrót do tego monitora wątku znajdującego się poza monitorem (obudzenie wątku), który najwcześniej został uśpiony i kontynuowanie wykonania metody synchronizowanej obiektu. W przypadku wywołania metody notifyall() do monitora wracają uśpione wątki pierwszy, który został wprowadzony z monitora, wraca do niego najwcześniej. W przykładzie dwie metody wyswietlx wzajemnie się informują, który wątek ostatnio ją wywoływał. Wywołanie metody wait() w tych metodach powoduje automatyczne wstrzymanie wykonania bieżącego wątku (testowanie składowej num: prawdziwy warunek num!=2 oznacza, że obiekt1 typu Watek5 ostatnio wykonał metodę wyswietl1 lub wywołano metodę wyswietl1 po raz pierwszy, prawdziwy warunek num==2 oznacza, że obiekt2 typu Watek6 jako ostatni wykonał metodę wyswietl2) Obiekt2 typu Watek6 wykonuje metodę wyswietl2, gdy num!=2 (czyli po obiekcie1 typu Watek5 lub po raz pierwszy w programie) i ustawia w zmiennej num wartość 2 i wywołuje metodę notify (notifyall()), która wznawia wykonanie metody wyswietl1 dla obiektu1 typu Watek5. lub obiekt1 typu Watek5 wykonuje metodę wyswietl1, gdy num==2 (czyli po obiekcie2 typu Watek6) i ustawia w zmiennej num wartość bieżąca >2 i wywołuje metodę notify (notifyall()), która wznawia wykonanie metody wyswietl2 dla obiektu2 typu Watek6. Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 19

20 Przykład 8 import java.util.*; import java.io.*; import java.lang.*; class Zasob3 { int num=3; synchronized void wyswietl1(string m, int n) { if (num!=2) {/*System.out.println("wait1:" +num+" "+n); */ wait(); catch(interruptedexception e) { System.out.print("< "+m); num = n; System.out.println(num+">"); /*System.out.println("notify1:" +num+" "+n); */ notify(); synchronized void wyswietl2( String m,int n ) { if (num == 2) {/*System.out.println("wait2:" +num+" "+n); */ wait(); catch(interruptedexception e) { System.out.print("< "+m); num = n; System.out.println(num+">"); /*System.out.println("notify2:" +num+" "+n); */ notify(); * Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 20

21 class Watek5 implements Runnable { String s; Zasob3 z; int num; public Watek5(Zasob3 zasob, String lan, int n) { s = lan; z = zasob; num = n; public void run() { while (true) { z.wyswietl1(s, num++); { Thread.sleep(400); // wylaczenie opoznienia w drugim eksperymencie catch(exception e) { class Watek6 extends Watek5 { public Watek6(Zasob3 zasob, String lan, int n) { super(zasob, lan, n); public void run() { while (true) {z.wyswietl2(s, num); { Thread.sleep(1000); // wylaczenie opoznienia w drugim eksperymencie catch(exception e) { Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 21

22 public class p6_5 { void demo() { Zasob3 zasob = new Zasob3(); Watek5 obiekt1 = new Watek5(zasob, "Watek1 ", 3); Thread watek5 = new Thread(obiekt1); watek5.start(); Watek6 obiekt2 = new Watek6(zasob, "Watek2 ", 2); Thread watek6 = new Thread(obiekt2); watek6.start(); public static void main (String argd[]) { p6_5 p = new p6_5 (); p.demo(); Podsumowanie: wywołanie metody wait przez dany obiekt bieżącego wątku powoduje automatyczne przerwanie wykonywania tego wątku (uśpienie tego wątku) i również automatyczne wznowienie go (obudzenie) po wywołaniu metody notify (lub notifyall) przez inną synchronizowaną metodę tego samego obiektu wykonaną przez inny wątek. W przypadku wielu przerwanych wątków uruchamiany jest ten, który pierwszy został przerwanym (notify); jeśli wywołano notifyall wątki są wznawiane według ich priorytetów lub kolejności ich usypiania. Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 22

23 Eksperyment 1 Działanie metod run, które po zakończeniu metod wyswietlx wchodzą w stany opóźnień Thread.sleep(1000) oraz Thread.sleep(400). Faza początkowa Wątek typu Watek5 jako pierwszy wywołał metodę wyswietl1 i wszedł w stan wait (prawdziwy warunek num!=2) po wywołaniu metody wait. Faza 1 Wątek typu Watek6 wykonuje metodę wyswietl2 nie wchodząc w stan wait (fałszywy warunek num==2), nadając wartość zmiennej num wartość 2 i wywołując metodę notify budzi wątek typu Watek5 i sam przechodzi do stanu opóźnienia sleep(1000). Faza 2 Watek typu Watek5 wznawia działanie metody wyswietl1 nadając zmiennej num wartość >2 i wywołując metodę notify, która jednak nie budzi wątku typu Watek6, ponieważ jest on jeszcze w stanie sleep. Watek typu Watek5 przechodzi do stanu opóźnienia sleep(400). Po upływie czasu 400 ms wywołuje ponownie metodę wyswietl1 i przechodzi do stanu wait (prawdziwy warunek num!=2) po wywołaniu metody wait. Każdy wątek powtarza cyklicznie Fazę1 i Fazę 2. W eksperymencie wykazano, że wolniejszy wątek nie zdąży wejść w stan wait, jednak synchronizacja wątków jest poprawna. Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 23

24 Eksperyment 2 Działanie metod run, które po zakończeniu metod wyswietlx nie wchodzą w stany opóźnienia Thread.sleep(1000) oraz Thread.sleep(400). Faza początkowa Wątek typu Watek5 jako pierwszy wywołał metodę wyswietl1 i wszedł w stan wait (num!=2) po wywołaniu metody wait. Wątek typu Watek6 wykonał metodę wyswietl2 nie wchodząc w stan wait (fałszywy warunek num==2), nadając wartość zmiennej num wartość 2 i wywołując metodę notify budzi wątek typu Watek5. Następnie wątek typu Watek6 ponownie wywołuje metodę wyswietl2 i wywołując metodę wait przechodzi do stanu wait (prawdziwy warunek num==2). Faza 1: Watek typu Watek5 wznawia działanie metody wyswietl1 nadając zmiennej num wartość >2 i wywołując metodę notify budzi wątek typu Watek6, ponieważ jest on w stanie wait. Następnie wątek typu Watek5 ponownie wywołuje metodę wyswietl1 i wywołując metodę wait przechodzi do wait (prawdziwy warunek num!=2). Faza 2: Watek typu Watek6 wznawia działanie metody wyswietl2 nadając zmiennej num wartość 2 i wywołując metodę notify budzi wątek typu Watek5, ponieważ jest on w stanie wait. Następnie watek typu Watek6 ponownie wywołuje metodę wyswietl2 i wywołując metodę wait przechodzi do wait (prawdziwy warunek num==2). Każdy wątek powtarza cyklicznie Fazę1 i Fazę2. W eksperymencie wykazano, że dwa wątki o porównywalnej szybkości działania są synchronizowane za pomocą metod wait i notify monitora wspólnego obiektu typu Zasob. Autor: dr inż. Zofia Kruczkiewicz, Programowanie aplikacji internetowych 24

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Wykład 7: Pakiety i Interfejsy

Wykład 7: Pakiety i Interfejsy Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,

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

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

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

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

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

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

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

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

Programowanie w Internecie. Java

Programowanie w Internecie. Java Programowanie w Internecie Java Autor: dr inż. Zofia Kruczkiewicz Literatura: L. Lemay, R. Cadenhead P. Naughton Krzysztof Barteczko Boone Barry Java 2 dla każdego Podręcznik Języka Programowania Java

Bardziej szczegółowo

msgbox("akcja: Początek, argument: " + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox("akcja: Koniec"); return DateTime.Now.

msgbox(akcja: Początek, argument:  + argument.tostring()); Thread.Sleep(1000); //opóźnienie msgbox(akcja: Koniec); return DateTime.Now. Programowanie asynchroniczne. Operator await i modyfikator async Język C# 5.0 wyposażony został w nowy operator await, ułatwiający synchronizację dodatkowych zadań uruchomionych przez użytkownika. Poniżej

Bardziej szczegółowo

Przykłady interfejsu TCP i UDP w Javie

Przykłady interfejsu TCP i UDP w Javie Przykłady interfejsu TCP i UDP w Javie W Javie interfejsy TCP i UDP znajdują się w pakiecie java.net http://docs.oracle.com/javase/6/docs/api/java/net/packagesummary.html 1 Przykład interfejsu UDP Protokół

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

Wykład 2: Podstawy Języka

Wykład 2: Podstawy Języka Wykład 2: Podstawy Języka 1.wprowadzenie 2.podstawy języka 3.sterowanie 4.inicjacja i sprzątanie 5.kontrola dostępu 6.dziedziczenie 7.polimorfizm 8.obsługa błędów 9.kolekcje obiektów 10.wejście i wyjście

Bardziej szczegółowo

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy

WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy WSNHiD, Programowanie 2 Lab. 2 Język Java struktura programu, dziedziczenie, abstrakcja, polimorfizm, interfejsy Pojęcie klasy Program napisany w języku Java składa się ze zbioru klas. Każda klasa zawiera

Bardziej szczegółowo

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/

Kurs WWW. Paweł Rajba. pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Paweł Rajba pawel@ii.uni.wroc.pl http://pawel.ii.uni.wroc.pl/ Spis treści Wprowadzenie Automatyczne ładowanie klas Składowe klasy, widoczność składowych Konstruktory i tworzenie obiektów Destruktory i

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

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

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet. Python: Wątki. Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Python: Wątki Kraków, 12 grudnia 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Wątki akt pierwszy, kilka przydatnych funkcji Lib/threading.py modół pozwalający

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Literatura: Autor: dr inŝ. Zofia Kruczkiewicz Java P. L. Krzysztof Lemay, Naughton Barteczko R. Cadenhead JAVA, Java Podręcznik 2 wykłady dla kaŝdego Języka i ćwiczenia Programowania

Bardziej szczegółowo

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak

Java: otwórz okienko. Programowanie w językach wysokiego poziomu. mgr inż. Anna Wawszczak Java: otwórz okienko Programowanie w językach wysokiego poziomu mgr inż. Anna Wawszczak PLAN WYKŁADU klasy wewnętrzne, lokalne i anonimowe biblioteka AWT zestaw Swing JFrame JPanel komponenty obsługa zdarzeń

Bardziej szczegółowo

dr Krzysztof Podlaski

dr Krzysztof Podlaski dr Krzysztof Podlaski Wydział Fizyki i Informatyki Stosowanej 19.11.2010 Łódź Wstęp do Java, wykład 3 1 Biblioteki standardowe Obszerny zestaw Klas i Interfejsów Obsługa Strumieni We-Wy Dysków Sieci java.io,

Bardziej szczegółowo

Klasy abstrakcyjne i interfejsy

Klasy abstrakcyjne i interfejsy Klasy abstrakcyjne i interfejsy Streszczenie Celem wykładu jest omówienie klas abstrakcyjnych i interfejsów w Javie. Czas wykładu 45 minut. Rozwiązanie w miarę standardowego zadania matematycznego (i nie

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Laboratorium 1. Wstęp do programowania w języku Java. Narzędzia 1. Aby móc tworzyć programy w języku Java, potrzebny jest zestaw narzędzi Java Development Kit, który można ściągnąć

Bardziej szczegółowo

Programowanie sieciowe

Programowanie sieciowe Programowanie sieciowe mgr Marcin Raniszewski mgr inŝ. Paweł Kośla Łódź, 2009 Wykład 6: Wielowątkowość, operacje na plikach, kolekcje 1 Plan wykładu Wątki (klasa Thread i interfejs Runnable) Synchronizacja

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 2 Marcin Młotkowski 4 marca 2015 Plan wykładu 1 2 3 4 5 Marcin Młotkowski Programowanie obiektowe 2 / 47 Krótki opis C Obiektowy, z kontrolą typów; automatyczne odśmiecanie;

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

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

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

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle

Pętle while, for, do while, instrukcje break, continue, switch 1. Pętle Pętle while, for, while, instrukcje break, continue, switch 1. Pętle Przykład 1 - Pętla while public class lab4_3 public static void main(string[] args) char ch = 'a'; String s, wynik=""; while ( ch!=

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

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017

Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017 Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania

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

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne

Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne Podejście obiektowe. Tablice obiektów Przykład 1 metody i atrybuty statyczne oraz niestatyczne import javax.swing.*; import java.util.*; public class Napis4 { String wynik = ""; static int ile_obiektow

Bardziej szczegółowo

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)?

1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? 1. Co można powiedzieć o poniższym kodzie (zakładając, że znajduje się on w jednym pliku A.java)? public class A { public int i; { i++; System.out.print(i); public static void main(string[] args) { A a1

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 1 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa w klasie! 2 Język

Bardziej szczegółowo

Podstawy programowania w lejos

Podstawy programowania w lejos Podstawy programowania w lejos Plan wykładu 1. Prezentacja rozwiązań zadań domowych z pierwszych zajęć. 2. Maszyna wirtualna lejos: a. instalacja SDK lejos na komputerze, b. instalacja lejosa na kostce

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

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

Klasy i obiekty cz II

Klasy i obiekty cz II Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy

Bardziej szczegółowo

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static),

Obszar statyczny dane dostępne w dowolnym momencie podczas pracy programu (wprowadzone słowem kluczowym static), Tworzenie obiektów Dostęp do obiektów jest realizowany przez referencje. Obiekty w języku Java są tworzone poprzez użycie słowa kluczowego new. String lan = new String( Lancuch ); Obszary pamięci w których

Bardziej szczegółowo

/** Program demonstrujący działanie klasy GregorianCalendar import java.util.*; public class TestKalendarza // zbuduj d i zainicjalizuj z aktualną datą GregorianCalendar d = new GregorianCalendar(); int

Bardziej szczegółowo

Podstawy programowania obiektowego

Podstawy programowania obiektowego Podstawy programowania obiektowego Technologie internetowe Wykład 5 Program wykładu Podejście obiektowe kontra strukturalne do tworzenie programu Pojęcie klasy i obiektu Składowe klasy: pola i metody Tworzenie

Bardziej szczegółowo

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu.

Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Sposoby tworzenia projektu zawierającego aplet w środowisku NetBeans. Metody zabezpieczenia komputera użytkownika przed działaniem apletu. Dr inż. Zofia Kruczkiewicz Dwa sposoby tworzenia apletów Dwa sposoby

Bardziej szczegółowo

KLASY, INTERFEJSY, ITP

KLASY, INTERFEJSY, ITP KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/

Bardziej szczegółowo

Kurs języka Python. Wątki

Kurs języka Python. Wątki Kurs języka Python Wątki Wątek Wątek (ang. thread) to jednostka wykonawcza w obrębie jednego procesu, będąca kolejnym ciągiem instrukcji wykonywanym w obrębie tych samych danych (w tej samej przestrzeni

Bardziej szczegółowo

Temat zajęć: Tworzenie i obsługa wątków.

Temat zajęć: Tworzenie i obsługa wątków. Temat zajęć: Tworzenie i obsługa wątków. Czas realizacji zajęć: 180 min. Zakres materiału, jaki zostanie zrealizowany podczas zajęć: Tworzenie wątków, przekazywanie parametrów do funkcji wątków i pobieranie

Bardziej szczegółowo

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie

RESTful Android. Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie RESTful Android Na co zwrócić uwagę przy tworzeniu aplikacji klienckich REST na Androidzie Jacek Laskowski jacek@japila.pl http://www.jaceklaskowski.pl wersja 1.0, 08.12.2011 O prelegencie - Jacek Laskowski

Bardziej szczegółowo

Diagramy czynności Na podstawie UML 2.0 Tutorial

Diagramy czynności Na podstawie UML 2.0 Tutorial Diagramy czynności Na podstawie UML 2.0 Tutorial http://sparxsystems.com.au/resources/uml2_tutorial/ Zofia Kruczkiewicz 1 Diagramy czynności 1. Diagramy czyności UML http://sparxsystems.com.au/resources/uml2_tutorial/

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

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

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut.

Konstruktory. Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Konstruktory Streszczenie Celem wykładu jest zaprezentowanie konstruktorów w Javie, syntaktyki oraz zalet ich stosowania. Czas wykładu 45 minut. Rozpatrzmy przykład przedstawiający klasę Prostokat: class

Bardziej szczegółowo

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki

Programowanie w Sieci Internet Blok 2 - PHP. Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Programowanie w Sieci Internet Blok 2 - PHP Kraków, 09 listopada 2012 mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Podstawy podstaw, czyli małe wprowadzenie do PHP, Podstawy

Bardziej szczegółowo

Model pamięci. Rafał Skinderowicz

Model pamięci. Rafał Skinderowicz Model pamięci Rafał Skinderowicz Czym jest model pamięci Model pamięci dotyczy programów współbieżnych W programie współbieżnym może się zdarzyć, że dany wątek nie będzie widział od razu wartości zmiennej

Bardziej szczegółowo

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java

Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment

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

Tworzenie i wykorzystanie usług

Tworzenie i wykorzystanie usług Strona 1 Co to jest usługa w systemie Android? Usługi HTTP Obsługa wywołania HTTP GET Obsługa wywołania HTTP POST Obsługa wieloczęściowego wywołania HTTP POST Usługi lokalne Usługi zdalne Tworzenie usługi

Bardziej szczegółowo

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej.

Poniższe funkcje opisane są w 2 i 3 części pomocy systemowej. Procesy Proces (zwany też zadaniem) jest jednostką aktywną, kontrolowaną przez system operacyjny i związaną z wykonywanym programem. Proces ma przydzielone zasoby typu pamięć (segment kodu, segment danych,

Bardziej szczegółowo

Materiały do laboratorium MS ACCESS BASIC

Materiały do laboratorium MS ACCESS BASIC Materiały do laboratorium MS ACCESS BASIC Opracowała: Katarzyna Harężlak Access Basic jest językiem programowania wykorzystywanym w celu powiązania obiektów aplikacji w jeden spójny system. PROCEDURY I

Bardziej szczegółowo

Kontenery i komponenty graficzne

Kontenery i komponenty graficzne JAVA Kontenery i komponenty graficzne Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Opracował: Andrzej Nowak Kontenery Aplikacja okienkowa składa

Bardziej szczegółowo

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB

Wykład 3. Procesy i wątki. Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wykład 3 Procesy i wątki Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Pojęcie procesu Program = plik wykonywalny na dysku Proces = uruchomiony i wykonywany program w pamięci

Bardziej szczegółowo

akademia androida Service, BroadcastReceiver, ContentProvider część IV

akademia androida Service, BroadcastReceiver, ContentProvider część IV akademia androida Service, BroadcastReceiver, ContentProvider część IV agenda 1. BroadcastReceiver 2. Service 3. ContentProvider 4. Zadanie 1. 5. Zadanie 2 (domowe). 1. BroadcastReceiver BroadcastReceiver

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

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW

STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW STRUMIENIE DANYCH, SERIALIZACJA OBIEKTÓW 1. Procedura korzystania ze strumieni danych Aby utworzyć plik: 1) Należy utworzyć obiekt (np. typu FileOutputStream), powiązany ze plikiem danych binarnych (np.

Bardziej szczegółowo

Szablony klas, zastosowanie szablonów w programach

Szablony klas, zastosowanie szablonów w programach Szablony klas, zastosowanie szablonów w programach 1. Szablony klas i funkcji 2. Szablon klasy obsługującej uniwersalną tablicę wskaźników 3. Zastosowanie metody zwracającej przez return referencję do

Bardziej szczegółowo

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij.

Strona główna. Strona tytułowa. Programowanie. Spis treści. Sobera Jolanta 16.09.2006. Strona 1 z 26. Powrót. Full Screen. Zamknij. Programowanie Sobera Jolanta 16.09.2006 Strona 1 z 26 1 Wprowadzenie do programowania 4 2 Pierwsza aplikacja 5 3 Typy danych 6 4 Operatory 9 Strona 2 z 26 5 Instrukcje sterujące 12 6 Podprogramy 15 7 Tablice

Bardziej szczegółowo

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

Język JAVA podstawy. wykład 2, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy wykład 2, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Rodzaje programów w Javie 2. Tworzenie aplikacji 3. Tworzenie apletów 4. Obsługa archiwów 5. Wyjątki 6. Klasa

Bardziej szczegółowo

Java Język programowania

Java Język programowania Java Język programowania Język Java Bazuje i jest zbliżony do C/C++ Porosty zbiór typów danych (podział na typy prymitywne i obiektowe) Zarządzanie pamięcią i Garbage Collection Zintegrowana synchronizacja

Bardziej szczegółowo

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli.

Wszystkie znaki występujące w tekście są zastrzeżonymi znakami firmowymi bądź towarowymi ich właścicieli. Wszelkie prawa zastrzeżone. Nieautoryzowane rozpowszechnianie całości lub fragmentu niniejszej publikacji w jakiejkolwiek postaci jest zabronione. Wykonywanie kopii metodą kserograficzną, fotograficzną,

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

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

Wykład 11: Programowanie Apletów

Wykład 11: Programowanie Apletów Wykład 11: Programowanie Apletów Aplety Aplikacja uruchamiana jako część dokumentu HTML: dostępna na serwerze transportowana przez Internet instalowana i uruchamiana na przeglądarce Po instalacji u klienta,

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

Ćwiczenie 1. Przygotowanie środowiska JAVA

Ćwiczenie 1. Przygotowanie środowiska JAVA Ćwiczenie 1 Przygotowanie środowiska JAVA 1. Wprowadzenie teoretyczne Instalacja JDK (Java Development Kit) NaleŜy pobrać z java.sun.com środowisko i zainstalować je. Następnie naleŝy skonfigurować środowisko.

Bardziej szczegółowo

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

Język JAVA podstawy. Wykład 4, część 1. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 1 1 Język JAVA podstawy Plan wykładu: 1. Podstawy modelowania obiektowego 2. Konstruktory 3. Dziedziczenie, związki pomiędzy klasami, UML 4. Polimorfizm 5. Klasy abstrakcyjne

Bardziej szczegółowo

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt

JAVA. Strumienie wejścia i wyjścia. Pliki - zapis i odczyt JAVA Pliki - zapis i odczyt Opracował: Andrzej Nowak Bibliografia: JAVA Szkoła programowania, D. Trajkowska Ćwiczenia praktyczne JAVA. Wydanie III,M. Lis Strumienie wejścia i wyjścia Strumienie wejścia

Bardziej szczegółowo