Programowanie sieciowe

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

Download "Programowanie sieciowe"

Transkrypt

1 Programowanie sieciowe mgr Marcin Raniszewski mgr inŝ. Paweł Kośla Łódź, 2009 Wykład 6: Wielowątkowość, operacje na plikach, kolekcje 1

2 Plan wykładu Wątki (klasa Thread i interfejs Runnable) Synchronizacja śycie wątków Odczyt i zapis do plików Typowe kolekcje 2

3 Wielowątkowość Proces to egzemplarz wykonywanego programu (inaczej: program w trakcie wykonywania). KaŜdemu procesowi system operacyjny przydziela zasoby, takie jak: procesor, pamięć (przestrzeń adresowa), dostęp do urządzeń wejścia-wyjścia oraz plików. Wątek (Thread) to jednostka wykonawcza w obrębie jednego procesu, będąca kolejnym ciągiem instrukcji wykonywanym w obrębie tych samych danych (procesu). Wątki mogą korzystać z przestrzeni adresowej procesu, ale posiadają własne kopie zmiennych lokalnych. 3

4 Wielowątkowość W Javie istnieją dwa sposoby korzystania z wątków: - tworzenie klas pochodnych klasy Thread - implementacja interfejsu Runnable Klasa, której obiekty mają działać jako wątki musi zawierać metodę: public void run() class MyThread extends Thread { public void run() { MyThread watek = new MyThread(); lub: class MyThread implements Runnable { public void run() { Thread watek = new Thread(new MyThread()); 4

5 Wielowątkowość Wątki uruchamia się metodą watek.start(). Wówczas, wykonywane są instrukcje zaimplementowane w metodzie run() (niezaleŝnie od instrukcji głównego programu). Wątek trwa do zakończenia metody run(). Mimo, Ŝe istnieje takŝe metoda stop(), to nie naleŝy jej uŝywać do wymuszania zakończenia wątku lepiej sprawdzać warunek logiczny wewnątrz run(). 5

6 Wielowątkowość - synchronizacja synchronized zabezpiecza metody lub obiekty przed jednoczesnym dostępem przez wiele wątków. Aby wskazać, Ŝe pewne linie kodu powinny być wykonywane razem, naleŝy je umieścić w bloku synchronized, który przeprowadza synchronizację na pewnym obiekcie, którego te linie kodu dotyczą. Jeśli metoda oznaczona jako synchronized jest aktualnie wykonywana, to wszystkie kolejne jednoczesne próby jej realizacji zostaną wstrzymane aŝ do czasu zakończenia pierwszego wywołania. public synchronized void add(object obj) {... synchronized (System.out) { //Pewne operacje na obiekcie System.out //Podczas wykonywania tego bloku przez pewien wątek załoŝona zostaje //blokada na dostęp do obiektu System.out //Jeśli pewien inny wątek chce skorzystać z obiektu System.out //zostaje zablokowany do czasu zdjęcia blokady z tego obiektu 6

7 Wielowątkowość - synchronizacja Synchronizacja bloku jest tylko częściową blokadą obiektu, na którym jest załoŝona. Inne metody mogą korzystać z synchronizowanego obiektu o ile nie usiłują synchronizować się na tym obiekcie. Nie zawsze synchronizacja jest najlepszym rozwiązaniem i często warto pokusić się o rozwiązania alternatywne: uŝywanie zmiennych lokalnych (kaŝdy wątek działa na własnym zestawie zmiennych lokalnych), uŝywanie metod działających na argumentach typów prostych (przekazywanych przez wartość) lub bezargumentowych, tworzenie klas niezmiennych (deklaracja wszystkich pól jako prywatnych, nie pisanie metod modyfikujących pola klasy). 7

8 Wielowątkowość - priorytety KaŜdy wątek ma priorytet w Javie jest to liczba całkowita z zakresu od 1 do 10. Wątek o priorytecie 10 będzie wykonywany w pierwszej kolejności, wątek o priorytecie 1 w ostatniej. Gdy gotowych do wykonania jest wiele wątków, maszyna wirtualna Javy uruchamia tylko ten o najwyŝszym priorytecie. Domyślnym priorytetem dla tworzonych wątków jest 5. Priorytety wątków przydatne gdy chcemy niektórym z nich przydzielić więcej czasu procesora (wątki do komunikacji z uŝytkownikami krótki czas odpowiedzi), a niektórym mniej (wątki dokonujące obliczeń, wątki długotrwałe brak wymagania co do prędkości realizacji). Pola i metody klasy Thread związane z priorytetami: public static final int MIN_PRIORITY = 1 public static final int NORM_PRIORITY = 5 public static final int MAX_PRIORITY = 10 public final void setpriority(int newpriority) public final int getpriority() 8

9 Wielowątkowość - wywłaszczenie Wszystkie maszyny wirtualne Javy do zarządzania wątkami o róŝnych priorytetach uŝywają programu z wywłaszczeniowym harmonogramem wątków (wątek o wyŝszym priorytecie wywłaszcza <przerywa działanie> wątek o niŝszym priorytecie). W przypadku działania wielu wątków o równych priorytetach: program wywłaszczający w sposób przypadkowy zatrzymuje działanie wątków i przydziela czas procesora innym wątkom, WaŜne jest aby upewnić się, Ŝe wszystkie wątki zatrzymują się periodycznie, po to by inne wątki miały okazję zadziałać. 9

10 Wielowątkowość - wywłaszczenie Wątek moŝe się zatrzymać lub ustąpić miejsca innym wątkom poprzez: zablokowanie wejścia i wyjścia, zablokowanie obiektu synchronizowanego, rezygnację, przejście w stan uśpienia, połączenie z innym wątkiem, czekanie na obiekcie, skończenie działania, wywłaszczenie przez inny wątek o wyŝszym priorytecie, zatrzymanie. 10

11 Wielowątkowość - zablokowanie Zablokowanie występuje wtedy gdy wątek musi się zatrzymać by poczekać na zasób, którego nie posiada. Najczęściej wątki blokują się na elementach wejścia/wyjścia systemu (czekanie na przybycie danych z sieci). Blokada występuje takŝe podczas próby dostępu do bloków lub metod synchronizowanych, na których jest załoŝona blokada. 11

12 Wielowątkowość - rezygnacja Wątek moŝe oddać sterowanie poprzez jawną rezygnację. SłuŜy do tego statyczna metoda klasy Thread: public static void yield() Wątek wywołując tą metodę, sygnalizuje wirtualnej maszynie Javy, Ŝe moŝe ona zacząć inny wątek, jeśli jest gotowy do uruchomienia. Wątek podczas rezygnacji nie powinien być na niczym zsynchronizowany (rezygnacja wątku nie zwalnia Ŝadnych blokad naleŝących do wątku). 12

13 Wielowątkowość stan uśpienia Stan uśpienia to forma rezygnacji z zasobów systemu na pewien ustalony czas. Wątek przechodzący w stan uśpienia podobnie jak podczas rezygnacji zatrzymuje wszystkie swoje blokady, więc nie powinien on tego robić w blokach zsynchronizowanych. Odpowiednie metody z klasy Thread to: public static void sleep(long milliseconds) throws InterruptedException public static void sleep(long milliseconds, int nanoseconds) throws InterruptedException Nie ma gwarancji, Ŝe wątek będzie spał dokładnie tyle, ile chcemy. Po pierwsze nie wiadomo czy wirtualna maszyna Javy na danym systemie ma moŝliwość odmierzenia czasu z dokładnością do nanosekund czy milisekund. Po drugie po przebudzeniu wątku, moŝe on czekać w kolejce na przydzielenie czasu procesora. 13

14 Wielowątkowość stan uśpienia MoŜliwe jest przedwczesne przebudzenie uśpionego wątku poprzez wywołanie metody: public void interrupt() Wywołanie tej metody dla wątku ustawia status przerwania (interrupted status) wątku na true. Wywołanie tej metody w przypadku uśpionego wątku powoduje przerwanie snu wątku i wyrzucenie wyjątku InterruptedException. Status przerwania wątku nadal pozostaje ustawiony na false. 14

15 Wielowątkowość stan uśpienia public class Watek { public static void main(string[] args) { System.out.println("Start programu"); MyThread watek1 = new MyThread(1); MyThread watek2 = new MyThread(2); watek1.start(); watek2.start(); class MyThread extends Thread { int nr; MyThread(int i) { nr=i; Start programu watek 1: 0 watek 2: 0 watek 1: 1 watek 2: 1 watek 1: 2 watek 2: 2 watek 1: 3 watek 2: 3 watek 1: 4 watek 2: 4 watek 1: 5 watek 2: 5 public void run() { for(int i=0 ; i<10; i++){ System.out.println("watek " + nr + ": " + i); try { this.sleep(100); catch(interruptedexception ie) { System.out.println("Nastąpiło przerwanie snu wątku " + nr); 15

16 Wielowątkowość łączenie z innym wątkiem Łączenie wątków jest przydatne gdy jednemu wątkowi potrzebny jest wynik pracy drugiego wątku. Do łączenia wykorzystuje się następujące metody klasy Thread: public final void join() throws InterruptedException public final void join(long milliseconds) throws InterruptedException public final void join(long milliseconds, int nanoseconds) throws InterruptedException 16

17 Wielowątkowość łączenie z innym public class Watek { public static void main(string[] args) { try{ System.out.println("start programu"); MyThread watek = new MyThread(); watek.start(); System.out.println("Kolejna instrukcja"); watek.join(); System.out.println("Nastepna instrukcja"); catch(interruptedexception e) { class MyThread extends Thread { public void run() { for(int i=0 ; i<10; i++){ System.out.println("watek: " + i); start programu Kolejna instrukcja watek: 0 watek: 1 watek: 2 watek: 3 watek: 4 watek: 5 watek: 6 watek: 7 watek: 8 watek: 9 Nastepna instrukcja wątkiem 17

18 Wielowątkowość czekanie na MoŜliwe jest czekanie na pewnym obiekcie przez dany wątek. Do czekania na obiekcie moŝna uŝyć metod klasy Object: obiekcie public final void wait() throws InterruptedException public final void wait(long milliseconds) throws InterruptedException public final void wait(long milliseconds, int nanoseconds) throws InterruptedException 18

19 Wielowątkowość czekanie na Wątek czeka na obiekcie dopóki: nie upłynie czas oczekiwania, wątek nie zostanie przerwany, obiekt nie zostanie powiadomiony. obiekcie 19

20 Wielowątkowość czekanie na obiekcie Powiadomienie obiektu następuje wtedy, gdy jakiś inny wątek wywoła na nim metodę klasy Object: public final void notify() public final void notifyall() Metoda notify() w dość losowy sposób wybiera jeden z listy wątków czekających na obiekcie i go budzi. Metoda notifyall() budzi wszystkie wątki czekające na danym obiekcie. 20

21 Wielowątkowość zatrzymanie Gdy metoda run() kończy swoje działanie, wątek umiera. NaleŜy pamiętać by nie przesadzać z tworzeniem wątków, nie tworzyć ich bez potrzeby. Jeśli działanie funkcji run() jest bardzo proste, krótkie i moŝe je zrealizować wątek główny programu to lepiej nie tworzyć wątku. Utworzenie wątku wiąŝe się z pewnym narzutem czasu działania, więc jest wysoko prawdopodobne, Ŝe wykonanie tych samych operacji w głównym wątku będzie szybsze niŝ w oddzielnym wątku. 21

22 import java.net.*; import java.io.*; import java.util.*; public class Server { public static void main(string[] args) { Server me = new Server(); me.echo(" "); public void echo(string host){ try{ InetAddress my = InetAddress.getByName(" "); ServerSocket serw = new ServerSocket(1090); while(true){ Socket sock = serw.accept(); new Kl(sock).start(); catch(ioexception e){ e.printstacktrace(); finally { (...) class Kl extends Thread { Socket klient; Kl(Socket sock){ this.klient = sock; public void run(){ try{ ObjectOutputStream out = new ObjectOutputStream(new BufferedOutputStream(klient.getOutputStream())); out.writedouble(23.54); out.flush(); klient.close(); catch(ioexception e){ e.printstacktrace(); finally { (...) 22

23 Klasa File Klasa File reprezentuje nazwę konkretnego pliku albo nazwę zbioru plików w katalogu. Najczęściej uŝywanym konstruktorem klasy File jest: public File(String pathname) throws NullPointerException gdzie pathname to ścieŝka dostępu do pliku lub katalogu. Konstruktor wyrzuci wyjątek NullPointerException jeśli pathname jest null-em. Kolejnymi konstruktorami są: public File(String parent, String child) throws NullPointerException public File(File parent, String child) throws NullPointerException tworzą one ścieŝkę do pliku lub katalogu na podstawie istniejącej ścieŝki parent i nowej ścieŝki child (konkatenacja). Jeśli parent jest null-em nie jest brany pod uwagę, jeśli child jest null-em - wyrzucany jest wyjątek 23 NullPointerException.

24 Klasa File Istnieje wiele uŝytecznym metod klasy File, oto niektóre z nich: public boolean canread() public boolean canwrite() public boolean createnewfile() public boolean delete() public boolean exists() public String getpath() public boolean isdirectory() public boolean isfile() public boolean ishidden() public long lastmodified() public long length() public String[] list() public boolean mkdir() 24

25 Odczyt/zapis z/do pliku W Javie odczyt i zapis do plików realizowany jest na zasadzie strumieni. Po otwarciu pliku do odczytu, cała jego zawartość jest dostępna jako strumień. Odczytując z niego dane, wyciągamy je bajt po bajcie ze strumienia. Jeśli chcemy pisać do pliku to teŝ konstruujemy odpowiedni strumień i piszemy na nim, a dane trafiają do pliku. Standardowo czytanie i zapis do pliku odbywa się bajt po bajcie. Do odczytu pojedynczych bajtów słuŝy klasa FileInputStream, a do zapisu FileOutputStream. 25

26 Odczyt z pliku FileInputStream fis = null; try { fis = new FileInputStream("pliktestowy.txt"); int bajt = 0; while((bajt = fis.read())!= -1){ System.out.print((char)bajt); catch (IOException ex){ System.out.println("Błąd przy odczycie danych: " + ex); finally { (...) 26

27 Odczyt z pliku Java, oprócz czytania bajt po bajcie, oferuje takŝe moŝliwość odczytu całej linii do obiektu typu String. MoŜliwe jest to dzięki tzw. strumieniom buforowanym. Najpierw trzeba utworzyć obiekt FileReader, a następnie trzeba stworzyć obiekt BufferedReader, podając mu obiekt FileReader jako argument: String linia = null; BufferedReader br = null; try { br = new BufferedReader(new FileReader("plik_testowy.txt"); while((linia = br.readline())!= null){ System.out.println(linia); catch (IOException ex){ System.out.println("Błąd przy operacji na pliku: "+ex); finally { (...) 27

28 Zapis do pliku FileOutputStream fos = null; try{ String str = "Próba zapisu"; fos = new FileOutputStream("plik_zapis.txt"); for(int i = 0; i < str.length(); i++){ fos.write((int)str.charat(i)); catch(ioexception ex) { System.out.println("Błąd operacji na pliku: " + ex); finally { (...) 28

29 Zapis do pliku Podobnie, aby móc buforować zapis do pliku moŝna posłuŝyć się klasami PrintWriter, BufferedWriter i FileWriter: PrintWriter pw = null; try{ String str = "Próba zapisu"; pw = new PrintWriter(new BufferedWriter(new FileWriter("plik_zapis.txt"))); pw.write(str); pw.flush(); catch(ioexception ex) { System.out.println("Błąd operacji na pliku: " + ex); finally { (...) 29

30 Kolekcje Kolekcje to implementacje struktur danych, słuŝących do przechowywania, przeglądania i zarządzania grupami obiektów Dobór odpowiedniej kolekcji zaleŝy od rozwiązywanego problemu: Czy będziemy chcieli przeszukiwać zbiór składający się z tysięcy czy nawet milionów elementów? Czy niezbędne będzie uporządkowanie tych elementów, moŝliwość łatwego wstawiania, usuwania elementów? Czy elementy mają być szybko wyszukiwane? Kolekcje w Javie rozdzielone są na: interfejsy definiują abstrakcyjne właściwości i operacje kolekcji, w oderwaniu od konkretnych implementacji implementacje klasy będące implementacjami konkretnych interfejsów 30

31 Interfejs Collection Interfejs Collection reprezentuje dowolną grupę obiektów. public interface Collection { boolean add (Object o); boolean contains(object o); boolean isempty(); boolean remove(object o); int size(); Iterator iterator();... Collection Object first(); Object last();... Set SortedSet List boolean add(int index, Object o); Object remove(int index); Object set(int index, Object o);... 31

32 Interfejsy Set, SortedSet, List Interfejs Set implementują zbiory, czyli struktury danych, nie zawierające dublujących się elementów. Bardziej formalnie zbiór nie moŝe zawierać dwóch obiektów p1 i p2, dla których p1.equals(p2) zwróci wartość true. Zbiór moŝe zawierać co najwyŝej jeden obiekt null. Klasy implementujący ten interfejs to: HashSet, LinkedHashSet, TreeSet Interfejs SortedSet jest podinterfejsem interfejsu Set i gwarantuje poruszanie się po kolekcji w sposób uporządkowany. Obiekty przechowywane w kolekcjach implementujących ten interfejs powinny implementować interfejs Comparable. Klasa implementująca ten interfejs to: TreeSet Interfejs List implementują listy, czyli struktury danych, w których elementy mają z góry ustalone miejsce. Elementy mogą się dublować. Klasy implementujące ten interfejs to: ArrayList, LinkedList 32

33 Interfejs Map Interfejs Map reprezentuje grupę odwzorowań klucz i wartość. Klucze nie mogą być zdublowane. Klasy które implementują ten interfejs to: HashMap, Hashtable, TreeMap. public interface Map { boolean containskey (Object key); boolean containsvalue(object value); Object get(object key); boolean isempty(); Object put(object key, Object value) Object remove(object key); int size(); Collection values();... Map SortedMap Object firstkey(); Object lastkey();... 33

34 Interfejs SortedMap Interfejs SortedMap reprezentuje mapy, które gwarantują sortowanie kluczy, według porządku wprowadzonego poprzez implementacje interfejsu Comparable dla obiektu kluczy lub poprzez podanie klasy komparatora przy tworzeniu mapy (który będzie uŝywany do sortowania kluczy). Klasa komparatora to klasa implementująca interfejs Comparator. Klasa implementująca interfejs SortedMap to TreeMap 34

35 Interfejs Iterator UmoŜliwia poruszanie się po dowolnej klasie implementującej interfejs Collection public interface Iterator { boolean hasnext(); Object next(); void remove(); Powtarzając wywołanie metody next() dla iteratora moŝemy odwiedzić kolejne obiekty kolekcji. Jeśli dotrzemy w ten sposób do końca kolekcji, to wywołanie metody next() spowoduje wyrzucenie wyjątku NoSuchElementException. Dlatego teŝ wywołanie metody next() nalezy poprzedzić wywołaniem metody hasnext() Kolejność odwiedzania elementów zaleŝy od typu kolekcji. Jeśli odwiedzamy elementy kolekcji ArrayList, to iterator rozpoczyna działanie od elementu o indeksie 0 i następnie zwiększa wartość indeksu o 1. Dla kolekcji HashSet elementy będą odwiedzane w przypadkowej kolejności 35

36 Interfejs Iterator MoŜemy być pewni, Ŝe uŝywając iteratora, odwiedzimy wszystkie elementy kolekcji, ale nie wolno nam czynić załoŝeń odnośnie ich uporządkowania Iteratory w Javie powinniśmy sobie wyobraŝać jako znaczniki ustawione zawsze pomiędzy elementami kolekcji (jeśli powołujemy iterator to jest on ustawiony przed elementami kolekcji). Wywołanie metody next() powoduje, Ŝe iterator przesuwa się ponad kolejnym elementem kolekcji i zwraca referencję do niego 36

37 Wykaz najwaŝniejszych implemenatcji kolekcji Typ kolekcji ArrayList LinkedList HashSet TreeSet LinkedHashSet HashMap TreeMap LinkedHashMap Opis sekwencja indeksowana o zmiennych rozmiarach (odpowiednik tablicy) sekwencja uporządkowana umoŝliwiająca efektywne wstawianie i usuwanie elementów (odpowiednik listy) zbiór nieuporządkowany (nie dopuszcza duplikatów) zbiór uporządkowany zbiór zapamiętujący kolejność wstawiania elementów mapa (asocjacje klucz/wartość) mapa o kluczach uporządkowanych mapa zapamiętująca porządek, w którym umieszczane były asocjacje 37

38 Przykłady uŝycia ArrayList import java.awt.point; import java.util.arraylist; import java.util.iterator; public class TestArrayList { public static void main(string[] args) { ArrayList list = new ArrayList(); list.add(new Point(1,1)); list.add(new Point(1,2)); list.add(new Point(1,3)); list.add(1, new Point(2,4)); Iterator i = list.iterator(); while (i.hasnext()) { System.out.println((Point)i.next()); list.remove(3); list.set(1, new Point(3,3)); System.out.println("==po modyfikacjach=="); i = list.iterator(); while (i.hasnext()) { System.out.println((Point)i.next()); java.awt.point[x=1,y=1] java.awt.point[x=2,y=4] java.awt.point[x=1,y=2] java.awt.point[x=1,y=3] ==po modyfikacjach== java.awt.point[x=1,y=1] java.awt.point[x=3,y=3] java.awt.point[x=1,y=2] 38

39 Przykłady uŝycia HashMap import java.util.hashmap; import java.util.iterator; import java.util.map; import java.util.set; public class Test2{ public static void main(string[] args) { HashMap map = new HashMap(); map.put(new Integer(1), "Marcin"); map.put(new Integer(2), "Ada"); map.put(new Integer(4), "Weronika"); map.put(new Integer(3), "Krzysiek"); Set set = map.entryset(); Iterator i = set.iterator(); while (i.hasnext()) { Map.Entry m = (Map.Entry)i.next(); System.out.println((Integer)m.getKey() + " -> " + (String)m.getValue()); map.remove(new Integer(2)); if (!map.containskey(new Integer(5))) { map.put(new Integer(5), "Pucio"); else { System.out.println("Klucz juz istnieje w mapie"); System.out.println("==po modyfikacjach=="); i = map.entryset().iterator(); while (i.hasnext()) { Map.Entry m = (Map.Entry)i.next(); System.out.println((Integer)m.getKey() + " -> " + (String)m.getValue()); if (map.containskey(new Integer(1))) { System.out.println((String)map.get(new Integer(1))); 2 -> Ada 4 -> Weronika 1 -> Marcin 3 -> Krzysiek ==po modyfikacjach== 4 -> Weronika 1 -> Marcin 3 -> Krzysiek 5 -> Pucio Marcin 39

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

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

Bardziej szczegółowo

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

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

Bardziej szczegółowo

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

Programowanie w języku Java. Kolekcje

Programowanie w języku Java. Kolekcje Programowanie w języku Java Kolekcje Definicja Kolekcja to obiekt, który grupuje elementy danych (inne obiekty) i pozwala traktować je jak jeden zestaw danych, umożliwiając jednocześnie wykonywanie na

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

Kolekcje - pakiet Java Collections Framework

Kolekcje - pakiet Java Collections Framework Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Definicja kolekcji

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

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

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

java.util.* :Kolekcje Tomasz Borzyszkowski

java.util.* :Kolekcje Tomasz Borzyszkowski java.util.* :Kolekcje Tomasz Borzyszkowski Wstęp Kolekcje w Java dają programiście pewien standardowy sposób radzenia sobie z przetwarzaniem grup obiektów. Implementacja kolekcji w Java składa się z następujących

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

Kolekcje - pakiet Java Collections Framework

Kolekcje - pakiet Java Collections Framework Programowanie obiektowe Kolekcje - pakiet Java Collections Framework Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Programowanie obiektowe

Bardziej szczegółowo

Programowanie Obiektowe (Java)

Programowanie Obiektowe (Java) 1. Wprowadzenie do kontenerów Wykład ósmy Kontenery s ą obiektami, które potrafi ą przechowywa ć inne obiekty w określony sposób. O kontenerach można myśle ć jako o gotowych do użycia strukturach danych.

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

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

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

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

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

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011

Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Kolekcje mgr Tomasz Xięski, Instytut Informatyki, Uniwersytet Śląski Katowice, 2011 Kolekcja obiekt, który grupuje inne obiekty, traktując je jako jeden zestaw danych i pozwalający na wykonywanie operacji

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

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 8: Tablice i kolekcje obiektów. 4/27/2013 S.Deniziak: Programowanie obiektowe - Java 1 Tablice class A { A [ ] a; A [ ] b=new A[5]; a b A [ ] c = {new A(), new A(), new A(),

Bardziej szczegółowo

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski

Realizacja ekstensji klasy. Paulina Strzelecka, Tomasz Roszkowski Realizacja ekstensji klasy Paulina Strzelecka, Tomasz Roszkowski Przechowywanie obiektów (odwolañ do obiektów) w Javie typ wbudowany - tablica zbiór klas kontenerowych Paulina Strzelecka, Tomasz Roszkowski

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

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

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

Język JAVA podstawy. Wykład 6, część 2. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 6, część 2 Jacek Rumiński 1 Język JAVA podstawy Plan wykładu: 1. Wprowadzenie do operacji wejścia/wyjścia: strumienie 2. Podstawowe klasy strumieni i InputStream/OutputStream

Bardziej szczegółowo

Kolekcje. Na podstawie:

Kolekcje. Na podstawie: Kolekcje Na podstawie: http://wazniak.mimuw.edu.pl Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz

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

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu.

Java Zadanie 1. Aby poprawnie uruchomić aplikację desktopową, należy zaimplementować główną metodę zapewniającą punkt wejścia do programu. Wstęp Java Zadanie Celem laboratorium jest zapoznanie się z podstawami platformy oraz języka Java. W ramach zadania należy przygotować aplikację zarządzania notatkami użytkownika obsługiwaną z konsoli.

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

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór.

Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Kolekcje Kolekcje w Javie Kolekcja (kontener) to po prostu obiekt, który grupuje wiele elementów w jeden twór. Pozwala na zapis, odczyt, korzystanie z danych oraz ich wzajemną komunikację. Przykład: ręka

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

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej

Wstęp do Java. Operacje Wejścia-Wyjścia Programowanie Wielowątkowe. dr Krzysztof Podlaski. Wydział Fizyki i Informatyki Stosowanej Wstęp do Java Operacje Wejścia-Wyjścia Programowanie Wielowątkowe dr Krzysztof Podlaski Wydział Fizyki i Informatyki Stosowanej 19.03.2015 Łódź 1 Obsługa procesów We-Wy Biblioteki standardowe Obszerny

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

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

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

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1

Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego Łódź. Java podstawy języka, wykład 4 1 Wydział Fizyki i Informatyki Stosowanej, Uniwersytetu Łódzkiego 03.12.2010 Łódź Java podstawy języka, wykład 4 1 Stosując blokady (synchronizację) Można doprowadzić do zablokowania wszystkich wątków Zakleszczenie

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

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

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

Java Collections Framework

Java Collections Framework Java Collections Framework Co to jest Java Collections Framework JCF Zunifikowana architektura do reprezentacji i manipulacji kolekcjami danych. Składa się z: Interfejsów Definuje abstrakcyjne typy możliwych

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

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

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

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

Dawid Gierszewski Adam Hanasko

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

Bardziej szczegółowo

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

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

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

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

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY

KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY KOLEKCJE JAVY API: NAJPROSTSZE PODSTAWY I. TABLICE, CZYLI PODSTAWOWY RODZAJ KOLEKCJI: ARRAYS Wady i zalety 1. (Na rozgrzewkę) Zdefiniuj dwie klasy w programie (mogą być nawet puste na nasze potrzeby).

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

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

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

Język JAVA podstawy. Wykład 4, część 3. Jacek Rumiński. Politechnika Gdańska, Inżynieria Biomedyczna Język JAVA podstawy Wykład 4, część 3 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

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5.

Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. Programy typu klient serwer. Programowanie w środowisku rozproszonym. Wykład 5. Schemat Internetu R R R R R R R 2 Model Internetu 3 Protokoły komunikacyjne stosowane w sieci Internet Protokoły warstwy

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

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

Java SE Laboratorium nr 7. Temat: Kolekcje

Java SE Laboratorium nr 7. Temat: Kolekcje Java SE Laboratorium nr 7 Temat: Kolekcje 1 1. Definicja i idea Często w programach zachodzi potrzeba przechowywania w pamięci nieznanej z góry liczby elementów. Możliwość taką dostarczają tzw. kontenery

Bardziej szczegółowo

Programowanie i projektowanie obiektowe

Programowanie i projektowanie obiektowe Programowanie i projektowanie obiektowe Kolekcje Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) PO w. X Jesień 2011 1 / 24 Kolekcje Interfejsy Implementacje Algorytmy Marketspeak

Bardziej szczegółowo

Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d.

Java niezbędnik programisty spotkanie nr 8. Kolekcje c.d. Java niezbędnik programisty spotkanie nr 8 Kolekcje c.d. 1 Kontenery (rysunek pożyczony z Thinkin in Java ed. 3) Legenda: kreski-interfejsy kropki-kl. Abstr. 2 Przykład static Collection fill(collection

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

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

Strumienie, pliki. Sortowanie. Wyjątki.

Strumienie, pliki. Sortowanie. Wyjątki. Strumienie, pliki. Sortowanie. Wyjątki. Serializacja Zapisuje całą klasę Plik binarny Delimiter nieokreślony Nie da się podglądać Pliki tekstowe Zapisuje wybrane informacje Plik tekstowy Delimiter ustawiamy

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

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

Języki i metody programowania Java INF302W Wykład 3 (część 2) Języki i metody programowania Java INF302W Wykład 3 (część 2) Autor Dr inż. Zofia Kruczkiewicz Autor, Zofia Kruczkiewicz Języki i metody programowania Java, wykład 3, część 2 1 STRUKTURA WYKŁADU 1. Systemowe

Bardziej szczegółowo

Podstawy otwartych języków programowania Przechowywanie danych

Podstawy otwartych języków programowania Przechowywanie danych Podstawy otwartych języków programowania Przechowywanie danych Wiktor Wandachowicz Sposoby przechowywania danych Typy podstawowe Pojedyncze obiekty Tablice obiektów i tablice typów podstawowych jednowymiarowe

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

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób.

Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Zadanie: Zadanie polega na stworzeniu bazy danych w pamięci zapewniającej efektywny dostęp do danych baza osób. Na kolejnych zajęciach projekt będzie rozwijana i uzupełniana o kolejne elementy omawiane

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

GUI - projektowanie interfejsów cz. II

GUI - projektowanie interfejsów cz. II Katedra Inżynierii Wiedzy, Uniwersytet Ekonomiczny w Katowicach Wykład 2 Java Foundations Classes przyciski; pola tekstowe; panele; okna dialogowe; biblioteka Swing. Metodyka (paradygmat) programowania

Bardziej szczegółowo

JAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html

JAVA I SIECI. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html JAVA I SIECI ZAGADNIENIA: URL, Interfejs gniazd, transmisja SSL, protokół JNLP. MATERIAŁY: http://docs.oracle.com/javase/tutorial/networking/index.html http://th-www.if.uj.edu.pl/zfs/ciesla/ JĘZYK JAVA,

Bardziej szczegółowo

Platformy Programistyczne Zagadnienia sieciowe i wątki

Platformy Programistyczne Zagadnienia sieciowe i wątki Platformy Programistyczne Zagadnienia sieciowe i wątki Agata Migalska 27/28 maja 2014 Komunikacja sieciowa 1 Komunikacja sieciowa 2 Wiele wątków 3 Serializacja Architektura typu klient-serwer Architektura

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

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

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016

Kurs programowania. Wykład 10. Wojciech Macyna. 05 maja 2016 Wykład 10 05 maja 2016 Biblioteka wejścia/wyjścia (Input/Output) import java.io.*; Umożliwia przechowywania danych na nośniku zewnętrznym Dane moga być wysyłane do plików, na drukarkę, do bufora pamięci,

Bardziej szczegółowo

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

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

Bardziej szczegółowo

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach

1 Klasa File. 2 Writer. Programowanie w j zyku Java - Adam Krechowicz. Klasa File zapewnia podstawowe operacje na plikach Programowanie w j zyku Java - Adam Krechowicz 1 Klasa File Klasa File zapewnia podstawowe operacje na plikach import java.io.file; public class FileTest { File f = new File("/home/adam/abc.txt"); f.createnewfile();

Bardziej szczegółowo

Strumienie i serializacja

Strumienie i serializacja Strumienie i serializacja Prezentacja dostępna na Syriuszu: http://sirius.cs.put.poznan.pl/~inf80156 Klasy: InputStream, OutputStream, Reader i Writer W Javie hierarchia strumieni oparta jest o cztery

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

Java: interfejsy i klasy wewnętrzne

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

Bardziej szczegółowo

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

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany

Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany Metody zawarte w klasie File: boolean createnewfile() tworzy nowy, pusty plik, ale tylko jeśli on wcześniej nie istniał. boolean delete() usuwa dany plik. boolean exists() sprawdza czy plik o zadanej nazwie

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

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

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

Tworzenie aplikacji w języku Java

Tworzenie aplikacji w języku Java Tworzenie aplikacji w języku Java Wykład 2 Java Collections Framework Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku

Bardziej szczegółowo

Wykład 8: Obsługa Wyjątków

Wykład 8: Obsługa Wyjątków Wykład 8: Obsługa Wyjątków Wyjątki Wyjątek to sytuacja nienormalna, która pojawia się w trakcie wykonania programu. W językach bez obsługi wyjątków, błędy są wykrywane i obsługiwane ręcznie, zwykle przez

Bardziej szczegółowo

Programowanie rozproszone w języku Java

Programowanie rozproszone w języku Java Wstęp Gniazda RMI Podsumowanie Programowanie rozproszone w języku Java Wojciech Rząsa wrzasa@prz-rzeszow.pl Katedra Informatyki i Automatyki, Politechnika Rzeszowska 25 maja 2015 Wojciech Rząsa, KIiA PRz

Bardziej szczegółowo

Kolekcje. object that groups multiple elements into a single unit

Kolekcje. object that groups multiple elements into a single unit Kolekcje object that groups multiple elements into a single unit W wielu programach deklaracje typu: MyObject myreference; są uprawnione, jednak często zwłaszcza przy bardziej skomplikowanych programach

Bardziej szczegółowo

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

Języki i metody programowania Java INF302W Wykład 3 (część 1) Języki i metody programowania Java INF302W Wykład 3 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 3, część 1 1 STRUKTURA WYKŁADU 1. Wyjątki,

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

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 Javie- wykład 11 Kolekcje (listy)

Programowanie w Javie- wykład 11 Kolekcje (listy) 1 Programowanie w Javie- wykład 11 Kolekcje (listy) Treści prezentowane w wykładzie zostały oparte o: Barteczko, JAVA Programowanie praktyczne od podstaw, PWN, 2014 Barteczko, JAVA Uniwersalne techniki

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

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