Równolegªo± w Javie w tki.

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

Download "Równolegªo± w Javie w tki."

Transkrypt

1 Równolegªo± w Javie w tki. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW

2 Wielow tkowo± w Javie Równolegªo± w Javie oparta jest na w tkach a nie na procesach W tek Java odpowiada w tkowi systemu operacyjnego (o ile system operacyjny obsªuguje w tki) W tek to tzw. lekki proces (ró»nice w Windows i Linux): W tki wspóªdziel wspóln przestrze«adresow Przeª czanie kontekstu pomi dzy w tkami jest znacznie szybsze ni» pomi dzy procesorami W tki nie blokuj u»ytkownika (np. GUI jest na oddzielnym w tku) W tki mog wykonywa zadania równolegle i si synchronizowa W tki s niezale»ne, wi c je±li w jednym z w tków wyst pi wyj tek to nie ma on wpªywu na pozostaªe (poza Error) 2 / 36

3 Wielow tkowo± vs Wieloprocesowo± 1 Ka»dy proces ma wªasn przestrze«adresow i alokuje pomi tylko na wªasny u»ytek 2 Procesy s ci»kie (heavyweight) 3 Koszt komunikacji mi dzyprocesowej jest du»y (poprzez specjalne obiekty zarz dzane przez system operacyjny) 4 Przeª czanie pomi dzy procesami wymaga czasu na zapisania i zaªadowanie rejestrów, map pami ci, aktualizacji list zasobów itp. 1 W tki dziel t sam pami 2 w tki s lekkie (lightweight) 3 Koszt komunikacji mi dzyw tkowej jest maªy 4 Przeª czanie kontekstu pomi dzy w tkami jest szybkie, poniewa» w tki s wykonywane wewn trz procesu 3 / 36

4 Cykl»ycia w tku 4 / 36

5 Tworzenie w tku W tki mo»na utworzy na 2 sposoby: poprzez rozszerzenie klasy Thread poprzez implementacj interfejsu Runnable Konstruktory klasy Thread: Thread() Thread(String name) Thread(Runnable r) Thread(Runnable r,string name) 5 / 36

6 Metody klasy Thread (1/2) public void run() public void start() public void sleep(long miliseconds) public void join() public void join(long miliseconds) public int getpriority() public int setpriority(int priority) public String getname() public void setname(string name) public Thread currentthread() 6 / 36

7 Metody klasy Thread (2/2) public boolean isalive() public void yield() public void suspend() [depricated]. public void resume() [depricated]. public void stop() [depricated]. public boolean isdaemon() public void setdaemon(boolean b) public void interrupt() public boolean isinterrupted() public static boolean interrupted() 7 / 36

8 Thread i Runnable - przykªad class MultiT extends Thread { public void run (){ System. out. println ( " W tek dziaªa... " ); public static void main ( String args []){ MultiT t1= new MultiT (); t1. start (); class MultiR implements Runnable { public void run (){ System. out. println ( " W tek dziaªa... " ); public static void main ( String args []){ MultiR m1= new MultiR (); Thread t1 = new Thread ( m1 ); t1. start (); 8 / 36

9 Klasa anonimowa w tku - przykªad class TestMultitaskingT { public static void main ( String args []){ Thread t1= new Thread (){ public void run (){ System. out. println ( " task one " ); ; Thread t2= new Thread (){ public void run (){ System. out. println ( " task two " ); ; t1. start (); t2. start (); 9 / 36 class TestMultitaskingR { public static void main ( String args []){ Runnable r1= new Runnable (){ public void run (){ System. out. println ( " task one " ); ; Runnable r2= new Runnable (){ public void run (){ System. out. println ( " task two " ); ; Thread t1= new Thread ( r1 ); Thread t2= new Thread ( r2 ); t1. start (); t2. start ();

10 Thread Scheduler Thread Scheduler (planista w tków) jest cz ±ci JVM i decyduje, który w tek b dzie uruchomiony Nie ma»adnych gwarancji, który w tek w stanie "runnable" zostanie wybrany do uruchomiania przez planist w tków Tylko jeden w tek mo»e w tym samym czasie by uruchomiony przez proces Planista w tków wskazuje, które zadanie (w tek) b dzie wykonane jako nast pne na podstawie priorytetu i innych czynników (np. dotychczasowego czasu dziaªania) 10 / 36

11 Harmonogram wykonania Planista w tków wykorzystuje gªównie harmonogram planowania prewencyjnego (preemptive) lub interwaªy czasu (time slice), aby zaplanowa czas wykonania w tków: planowanie prewencyjne - zadanie (w tek) z najwy»szym priorytetem jest wykonywane dopóki nie zacznie czeka (wait) lub si nie zako«czy lub nie przyjdzie zadanie z wy»szym priorytetem interwaªy czasu - ka»dy w tek ma z góry okre±lony czas, w którym mo»e dziaªa, je±li nie sko«czy zostaje przeniesiony do puli w tków gotowych do uruchomienia i uruchamiany jest kolejny gotowy 11 / 36

12 Metoda Sleep - przykªad class TestSleepMethod extends Thread { public void run (){ for ( int i =1; i <5; i ++){ try { Thread. sleep (500); catch ( InterruptedException e ){ System. out. println (e ); System. out. println (i ); public static void main ( String args []){ TestSleepMethod t1= new TestSleepMethod (); TestSleepMethod t2= new TestSleepMethod (); t1. start (); t2. start (); 12 / 36

13 Wystartowanie 2 razy tego samego w tku - przykªad public class TestThreadTwice extends Thread { public void run (){ System. out. println (" running... " ); public static void main ( String args []){ TestThreadTwice t1= new TestThreadTwice (); t1. start (); t1. start (); // running... // Exception in thread " main " // java. lang. IllegalThreadStateException 13 / 36

14 Czekanie na w tki - przykªad public class TestJoinMethod extends Thread { public void run (){ for ( int i =1; i <=5; i ++){ try { Thread. sleep (500); catch ( Exception e ){ System. out. println (e ); System. out. println ( Thread. currentthread (). getname ()+ " : "+i ); public static void main ( String args []){ TestJoinMethod t1= new TestJoinMethod (); TestJoinMethod t2= new TestJoinMethod (); TestJoinMethod t3= new TestJoinMethod (); System. out. println ( Thread. currentthread (). getname ()); t1. start (); try { t1. join (1500); catch ( Exception e ){ System. out. println (e ); t2. start (); t3. start (); 14 / 36

15 Czekanie na w tki - wydruk main Thread -0 : 1 Thread -0 : 2 Thread -0 : 3 Thread -1 : 1 Thread -2 : 1 Thread -0 : 4 Thread -1 : 2 Thread -2 : 2 Thread -0 : 5 Thread -1 : 3 Thread -2 : 3 Thread -1 : 4 Thread -2 : 4 Thread -2 : 5 Thread -1 : 5 15 / 36

16 Ustawianie priorytetów ka»dy w tek ma priorytet priorytet jest reprezentowany przez liczb z zakresu 1 do 10, priorytet domy±lny to 5 w wi kszo±ci przypadków planista ustawia w tki wg priorytetu, ale nie jest to gwarantowane i zale»y od stanu JVM 3 staªe w klasie Thread public static int MIN_PRIORITY public static int NORM_PRIORITY public static int MAX_PRIORITY 16 / 36

17 W tki - demony Zadaniem w tków-demonów (daemon thread) jest dostarczenie usªug dla w tków u»ytkownika»ycie tych w tków zale»y od ªaski w tków u»ytkownika - je±li wszystkie w tki u»ytkownika zako«cza dziaªanie JVM automatycznie zabija wszystkie w tki-demony w tki-demony dziaªaj w tle i maja niski priorytet mo»emy ustawi czy w tek jest demonem tylko przed uruchomieniem - ustawianie po uruchomieniu zako«czy si wyj tkiem IllegalThreadStateException 17 / 36

18 Watki - demony public class TestDaemonThread extends Thread { public void run (){ if ( Thread. currentthread (). isdaemon ()){ // sprawdzanie czy to w tek - demon System. out. println (" daemon thread work " ); else { System. out. println (" user thread work " ); public static void main ( String [] args ){ TestDaemonThread t1= new TestDaemonThread (); TestDaemonThread t2= new TestDaemonThread (); TestDaemonThread t3= new TestDaemonThread (); t1. setdaemon ( true ); // teraz w tek t1 jest w tkiem - demonem t1. start (); t2. start (); t3. start (); 18 / 36

19 Pula w tków Pula w tków w Javie to grupa w tków, które czekaj na zadanie i mo»na je wielokrotnie wykorzystywa Pula w tków na z góry ograniczona pojemno± - ilo± w tków Watek jest wyci gany z puli, aby wykona zadanie, a jak ju» je sko«czy to jest z powrotem wkªadany do puli w tków oczekuj cych Zaleta puli w tków jest jej wi ksza wydajno±, poniewa» nie ma potrzeby na nowo tworzenia obiektów w tku Powszechne zastosowanie ma w Servletach i JSP (JavaServer Pages), gdzie kontener tworzy pule w tków od obsªugi zapyta«serwera Za obsªug puli w tków odpowiadaj klasy ExecutorService i Executors 19 / 36

20 Pula w tków - przykªad import java.util. concurrent. ExecutorService ; import java.util. concurrent. Executors ; class WorkerThread implements Runnable { private String message ; public WorkerThread ( String s ){ this. message = s ; public void run () { System.out. println ( Thread. currentthread (). getname () + " ( Start ) message = "+ message ); processmessage (); System.out. println ( Thread. currentthread (). getname () + " ( End ) " ); private void processmessage () { try { Thread. sleep (2000); catch ( InterruptedException e ) { e. printstacktrace (); public class TestThreadPool { public static void main ( String [] args ) { ExecutorService executor = Executors. newfixedthreadpool (5); for ( int i = 0; i < 10; i ++) { Runnable worker = new WorkerThread ( " " + i ); executor. execute ( worker ); executor. shutdown (); while (! executor. isterminated ()) { System.out. println ( " Koniec w tków " ); 20 / 36

21 Pula w tków - wydruk pool -1 - thread -1 ( Start ) message = 0 pool -1 - thread -3 ( Start ) message = 2 pool -1 - thread -2 ( Start ) message = 1 pool -1 - thread -4 ( Start ) message = 3 pool -1 - thread -5 ( Start ) message = 4 pool -1 - thread -2 ( End ) pool -1 - thread -3 ( End ) pool -1 - thread -1 ( End ) pool -1 - thread -1 ( Start ) message = 7 pool -1 - thread -3 ( Start ) message = 6 pool -1 - thread -2 ( Start ) message = 5 pool -1 - thread -5 ( End ) pool -1 - thread -4 ( End ) pool -1 - thread -4 ( Start ) message = 9 pool -1 - thread -5 ( Start ) message = 8 pool -1 - thread -2 ( End ) pool -1 - thread -1 ( End ) pool -1 - thread -3 ( End ) pool -1 - thread -4 ( End ) pool -1 - thread -5 ( End ) Koniec w tków 21 / 36

22 Grupy w tków W tki w Javie mo»na poª czy w grupy, aby jednocze±nie wykonywa operacje na caªej grupie a nie tylko na pojedynczych w tkach UWAGA: metody suspend(), resume() i stop() s oznaczone jako "deprecated" Za grup w tków odpowiada klasa ThreadGroup: ThreadGroup(String name) ThreadGroup(ThreadGroup parent, String name) Thread(ThreadGroup group, Runnable target, String name) int activecount() int activegroupcount() void destroy() ThreadGroup getparent() void interrupt() void list() 22 / 36

23 Grupy w tków - przykªad public class ThreadGroupDemo implements Runnable { public void run () { System. out. println ( Thread. currentthread (). getname ()); public static void main ( String [] args ) { ThreadGroupDemo runnable = new ThreadGroupDemo (); ThreadGroup tg1 = new ThreadGroup (" Parent ThreadGroup " ); Thread t1 = new Thread ( tg1, runnable," one " ); t1. start (); Thread t2 = new Thread ( tg1, runnable," two " ); t2. start (); Thread t3 = new Thread ( tg1, runnable," three " ); t3. start (); System. out. println (" Thread Group Name : "+ tg1. getname ()); tg1. list (); 23 / 36

24 Java Shutdown Hook Hak zamkni cia (shutdown hook) mo»e by u»yty do przeprowadzania czyszczenia zasobów lub zapisywania stanu, gdy JVM wyª cza si normalnie lub nagle Je±li chcemy wykona jakie± czyszczenie zasobów zanim JVM si zamknie, to powinni±my u»y haka zamykania Kiedy JVM si zamknie: u»ytkownik nacisn ª CTRL+C zostaªa wywoªana metoda System.exit(int) u»ytkownik si wylogowaª u»ytkownik zamyka system 24 / 36

25 Shutdown Hook - przykªad class MyThread extends Thread { public void run (){ System. out. println (" Shut down hook task completed." ); public class TestShutdown { public static void main ( String [] args ) throws Exception { Runtime r= Runtime. getruntime (); r. addshutdownhook ( new MyThread ()); System. out. println (" Now main sleeping. Press CTRL +C to exit." ); try { Thread. sleep (3000); catch ( Exception e) { 25 / 36

26 Synchronizacja w Javie Synchronizacja to zdolno± do kontrolowania dost pu wielu w tków do jakiegokolwiek dzielonego zasobu Synchronizacja jest gªównie u»ywana do zapobiegania ingerencji w tków mi dzy sob oraz do zachowania spójno±ci zasobów i wykonania S 2 gªówne sposoby na synchronizacj : Wzajemne wykluczanie - poprzez metody synchronized nazwa_metody {, poprzez bloki synchronizowane synchronized(object reference expression) { oraz statyczn synchronizacj Kooperacja - komunikacja mi dzyw tkowa w Javie Koncepcja blokady (lock) - gdy jeden z w tków uzyska dost p do zasobu synchronizowanego to zakªada na niego blokad i inne w tki juz nie maj do niego dost pu 26 / 36

27 Synchronizacja metody - przykªad class Table { synchronized void printtable ( int n ){ // metoda synchronizowana for ( int i =1; i <=5; i ++){ System. out. println (n*i ); try { Thread. sleep (400); catch ( Exception e ){ System. out. println (e ); public class TestSynchronization { public static void main ( String args []){ final Table obj = new Table (); // tylko jedne obiekt Thread t1= new Thread (){ public void run (){ obj. printtable (5); ; Thread t2= new Thread (){ public void run (){ obj. printtable (100); ; t1. start (); t2. start (); 27 / 36

28 Synchronizacja bloku - przykªad class Table { void printtable ( int n ){ synchronized ( this ){ // synchronizowany blok for ( int i =1; i <=5; i ++){ System. out. println (n*i ); try { Thread. sleep (400); catch ( Exception e ){ System. out. println (e ); public class TestSynchronization { public static void main ( String args []){ final Table obj = new Table (); // tylko jedne obiekt Thread t1= new Thread (){ public void run (){ obj. printtable (5); ; Thread t2= new Thread (){ public void run (){ obj. printtable (100); ; t1. start (); t2. start (); 28 / 36

29 Synchronizacja statyczna Je±li stworzymy statyczn metod zsynchronizowan, blokada znajdzie si w klasie nie na obiekcie! Problemy bez synchronizacji statycznej: 29 / 36

30 Synchronizacja statyczna - przykªad class Table { synchronized static void printtable1 ( int n ){ for ( int i =1; i <=5; i ++){ System. out. println (n*i ); try { Thread. sleep (400); catch ( Exception e ){ System. out. println (e ); void printtable2 ( int n ){ synchronized ( Table. class ){ // blokada klasy for ( int i =1; i <=5; i ++){ System. out. println (n*i ); try { Thread. sleep (400); catch ( Exception e ){ System. out. println (e ); 30 / 36

31 Problem zakleszczenia Zakleszczenia s cz ±ci problemów z równolegªo±ci Zakleszczenie to zbiór procesów b d cych w impasie wywoªanym przez to,»e ka»dy proces nale» cy do tego zbioru przetrzymuje zasoby potrzebne innym procesom z tego zbioru, a jednocze±nie czeka na zasoby przydzielone innym procesom. Jak prosto doprowadzi do zakleszczenia: w tek 1 blokuje zasób 1 i chce zablokowa zasób 2 potrzebny do zako«czenia zadania równolegle w tek 2 blokuje zasób 2 i chce zablokowa zasób 1 potrzebny do zako«czenia zadania w tki 1 i 2 b d czekaªy w niesko«czono±, a» który± zwolni potrzeby zasób do zako«czenia zadania 31 / 36

32 Zakleszczenie - przykªad public class TestDeadlockExample { public static void main ( String [] args ) { final String resource1 = " res1 " ; final String resource2 = " res2 " ; // w tek 1 blokuje zasób 1 a potem zasób 2 Thread t1 = new Thread () { public void run () { synchronized ( resource1 ) { System.out. println ( " Thread 1: locked resource 1 " ); try { Thread. sleep (100); catch ( Exception e ) { synchronized ( resource2 ) { System.out. println ( " Thread 1: locked resource 2 " ); ; // reszta main w drugiej kolumnie public class TestDeadlockExample { public static void main ( String [] args ) { // w tek 2 blokuje zasób 2 a potem zasób 1 Thread t2 = new Thread () { public void run () { synchronized ( resource2 ) { System.out. println ( " Thread 2: locked resource 2 " ); try { Thread. sleep (100); catch ( Exception e ) { synchronized ( resource1 ) { System.out. println ( " Thread 2: locked resource 1 " ); ; t1. start (); t2. start (); 32 / 36

33 Komunikacja mi dzyw tkowa Komunikacja mi dzyw tkowa sªu»y do kooperacji pomi dzy w tkami Gªównie u»ywa si jej do komunikacji, ze dany zasób jest dost pny do u»ycia, np. watek pisarza blokuje bufor, pisze do bufora a na koniec informuje w tek czytelnika,»e mo»na ju» odczyta dane metoda wait() - powoduje,»e watek znosi blokad i czeka dopóki inny watek nie wywoªa metody notify() lub notifyall() dla danego obiektu lub kiedy upªyn ª odpowiedni czas metoda notify() - powoduje obudzenie w tku czekaj cego na monitorze obiektu. Je±li czeka wiele w tków, to jeden z nich zostanie wybrany do obudzenia metoda notifyall() - budzi wszystkie w tki czekaj ce na monitorze obiektu 33 / 36

34 Proces komunikacji mi dzyw tkowej 34 / 36

35 Komunikacja mi dzyw tkowa - przykªad class Customer { int amount =10000; synchronized void withdraw ( int amount ){ System.out. println ( " going to withdraw... " ); if ( this. amount < amount ){ System.out. println ( "Less balance ; " + " waiting for deposit... " ); try {wait (); catch ( Exception e ){ this. amount -= amount ; System.out. println ( " withdraw completed... " ); synchronized void deposit ( int amount ){ System.out. println ( " going to deposit... " ); this. amount += amount ; System.out. println ( " deposit completed... " ); notify (); class Test { public static void main ( String args []){ final Customer c=new Customer (); new Thread (){ public void run (){ c. withdraw (15000);. start (); new Thread (){ public void run (){ c. deposit (10000);. start (); 35 / 36

36 36 / 36 Pytania?

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ść 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

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

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

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ść 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

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ą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 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

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 Podstawowe pojęcia: procesy

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

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

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

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 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

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

Współbieżność w Javie. Dariusz Wawrzyniak 1. Dziedziczenie z klasy Thread definicja klasy pochodnej od Thread,

Współbieżność w Javie. Dariusz Wawrzyniak 1. Dziedziczenie z klasy Thread definicja klasy pochodnej od Thread, 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

c Radosªaw Klimek Vincent Van GOGH: M»czyzna pij cy li»ank kawy J zyk programowania Java

c Radosªaw Klimek Vincent Van GOGH: M»czyzna pij cy li»ank kawy J zyk programowania Java J zyk programowania JAVA c 2011-12 Vincent Van GOGH: M»czyzna pij cy li»ank kawy W tki Proces to wykonuj cy si program wraz z dynamicznie przydzielanymi mu przez system zasobami (np. pami ci operacyjn,

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

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

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

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

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

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

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

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

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

Podstawy współbieżności

Podstawy współbieżności 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

Bardziej szczegółowo

Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów

Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów Interfejsy, klasy wewn trzne jako szczególny rodzaj obiektów Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 16.03.2017 Interfejsy raz jeszcze "Interfejsy

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

Kolekcje obiektów. Wyj tki.

Kolekcje obiektów. Wyj tki. Kolekcje obiektów. Wyj tki. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 30.03.2017 Kolekcje obiektów Kolekcje obiektów (Java Collections) sª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

Java a dost p do Internetu.

Java a dost p do Internetu. Java a dost p do Internetu. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 20.04.2017 Java a dost p do Internetu Java Networking - jest koncepcj

Bardziej szczegółowo

Rozwi zania klasycznych problemów w Rendezvous

Rozwi zania klasycznych problemów w Rendezvous Cz ± I Rozwi zania klasycznych problemów w Rendezvous 1 Producenci i konsumenci Na pocz tek rozwa»my wersj z jednym producentem i jednym konsumentem, dziaªaj cymi w niesko«czonych p tlach. Mechanizm komunikacji

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

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

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

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

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

Systemy Rozproszone - Ćwiczenie 6

Systemy Rozproszone - Ćwiczenie 6 Systemy Rozproszone - Ćwiczenie 6 1 Obiekty zdalne Celem ćwiczenia jest stworzenie obiektu zdalnego świadczącego prostą usługę nazewniczą. Nazwy i odpowiadające im punkty końcowe będą przechowywane przez

Bardziej szczegółowo

Java jako zdalny interfejs aplikacji Webowych aplety

Java jako zdalny interfejs aplikacji Webowych aplety Java jako zdalny interfejs aplikacji Webowych aplety Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 18.05.2017 Java Applet Aplet to specjalny typ

Bardziej szczegółowo

Programowanie i struktury danych

Programowanie i struktury danych Programowanie i struktury danych Wykªad 3 1 / 37 tekstowe binarne Wyró»niamy dwa rodzaje plików: pliki binarne pliki tekstowe 2 / 37 binarne tekstowe binarne Plik binarny to ci g bajtów zapami tanych w

Bardziej szczegółowo

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016

Kurs programowania. Wykład 9. Wojciech Macyna. 28 kwiecień 2016 Wykład 9 28 kwiecień 2016 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa

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

Wzorce projektowe strukturalne cz. 1

Wzorce projektowe strukturalne cz. 1 Wzorce projektowe strukturalne cz. 1 Krzysztof Ciebiera 19 pa¹dziernika 2005 1 1 Wst p 1.1 Podstawowe wzorce Podstawowe wzorce Podstawowe informacje Singleton gwarantuje,»e klasa ma jeden egzemplarz. Adapter

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 wspóªbie»ne

Programowanie wspóªbie»ne 1 Programowanie wspóªbie»ne wiczenia 5 monitory cz. 1 Zadanie 1: Stolik dwuosobowy raz jeszcze W systemie dziaªa N par procesów. Procesy z pary s nierozró»nialne. Ka»dy proces cyklicznie wykonuje wªasnesprawy,

Bardziej szczegółowo

0.1 Hierarchia klas. 0.1.1 Diagram. 0.1.2 Krótkie wyjaśnienie

0.1 Hierarchia klas. 0.1.1 Diagram. 0.1.2 Krótkie wyjaśnienie 0.1 Hierarchia klas 0.1.1 Diagram 0.1.2 Krótkie wyjaśnienie Po pierwsze to jest tylko przykładowe rozwiązanie. Zarówno na wtorkowych i czwartkowych ćwiczeniach odbiegaliśmy od niego, ale nie wiele. Na

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

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 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

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

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

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

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy.

1 Klasy. 1.1 Denicja klasy. 1.2 Skªadniki klasy. 1 Klasy. Klasa to inaczej mówi c typ który podobnie jak struktura skªada si z ró»nych typów danych. Tworz c klas programista tworzy nowy typ danych, który mo»e by modelem rzeczywistego obiektu. 1.1 Denicja

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

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

Kompozycja i dziedziczenie klas

Kompozycja i dziedziczenie klas Programowanie obiektowe Kompozycja i dziedziczenie klas Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Kompozycja i dziedziczenie klas

Bardziej szczegółowo

Podstawy i języki programowania

Podstawy i języki programowania Podstawy i języki programowania Laboratorium 8 - wprowadzenie do obsługi plików tekstowych i wyjątków mgr inż. Krzysztof Szwarc krzysztof@szwarc.net.pl Sosnowiec, 11 grudnia 2017 1 / 34 mgr inż. Krzysztof

Bardziej szczegółowo

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2.

Aplikacje RMI. Budowa aplikacji rozproszonych. Część 2. Aplikacje RMI Część 2 Budowa aplikacji rozproszonych http://java.sun.com/j2se/1.5.0/docs/guide/rmi/socketfactory/index.html I. Implementacja gniazd dziedziczących po Socket i ServerSocket oraz produkcji

Bardziej szczegółowo

Sposoby przekazywania parametrów w metodach.

Sposoby przekazywania parametrów w metodach. Temat: Definiowanie i wywoływanie metod. Zmienne lokalne w metodach. Sposoby przekazywania parametrów w metodach. Pojcia klasy i obiektu wprowadzenie. 1. Definiowanie i wywoływanie metod W dotychczas omawianych

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

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

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 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

Kurs programowania. Wykład 9. Wojciech Macyna

Kurs programowania. Wykład 9. Wojciech Macyna Wykład 9 Java Collections Framework (w C++ Standard Template Library) Kolekcja (kontener) Obiekt grupujacy/przechowuj acy jakieś elementy (obiekty lub wartości). Przykładami kolekcji sa zbiór, lista czy

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

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

Original edition copyright 2012 by The McGraw-Hill Companies, Inc. All rights reserved.

Original edition copyright 2012 by The McGraw-Hill Companies, Inc. All rights reserved. Tytuł oryginału: Java, A Beginner's Guide, 5th Edition Tłumaczenie: Jaromir Senczyk ISBN: 978-83-246-3919-9 Original edition copyright 2012 by The McGraw-Hill Companies, Inc. All rights reserved. Polish

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe III. Refleksja Małgorzata Prolejko OBI JA16Z03 Plan Klasa Class. Analiza funkcjonalności klasy. Podstawy obsługi wyjątków. Zastosowanie refleksji do analizy obiektów. Wywoływanie

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

Typy uogólnione. Robert A. Kªopotek Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW

Typy uogólnione. Robert A. Kªopotek Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW Typy uogólnione. Robert A. Kªopotek r.klopotek@uksw.edu.pl Wydziaª Matematyczno-Przyrodniczy. Szkoªa Nauk cisªych, UKSW 23.03.2017 Typy uogólnione (1/2) Typy uogólnione (generyczne) s to typy parametryzowane

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

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

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 Obiektowe Java

Programowanie Obiektowe Java Programowanie Obiektowe Java Małgorzata Janik Zakład Fizyki Jądrowej malgorzata.janik@pw.edu.pl http://java.fizyka.pw.edu.pl/ WDI 27-28 marca https://www.warszawskiedniinformatyki.pl/ (wtorek, środa) Wprowadzenie

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

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

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

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

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

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

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

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

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

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

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

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4);

1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4); 1. Co będzie wynikiem wykonania poniŝszych instrukcji? g2d.gettransform().scale(1, -1); g2d.gettransform().translate(4, -8); g2d.drawline(4, 0, 4, 4); a) b) c) d) 2. Jaki będzie wynik kompilacji i wykonania

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

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie

Języki Programowania II Wykład 3. Java podstawy. Przypomnienie Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania

Bardziej szczegółowo

Operatory. Składnia. Typy proste. Znaki specjalne

Operatory. Składnia. Typy proste. Znaki specjalne Składnia Operatory komentarze // /* */ /** */ litery A.. Z, a.. z, \udddd dddd>00c0 identyfikatory pierwszy znak= _, lub litera, następne dodatkowo 0.. 9 liczby dziesiętne Ddddd (D 0) liczby ósemkowe 0dddd

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

Programowanie obiektowe Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo

Bardziej szczegółowo

Platformy Programistyczne Podstawy języka Java

Platformy Programistyczne Podstawy języka Java Platformy Programistyczne Podstawy języka Java Agata Migalska 6 maja 2014 Plan wykładu 1 Sztuka wysławiania się w języku Java 2 Cały świat jest obiektem 3 Kolekcje 4 Zmienne i metody statyczne 5 Słowo

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