Przykład użycia iteratora dla zbioru. Który z poniższych przykładów jest poprawny i dlaczego?
|
|
- Lech Świderski
- 8 lat temu
- Przeglądów:
Transkrypt
1 Programowanie współbieżne Laboratorium nr 13 Kolekcje a współbieżność "Iteratory szybko zgłaszające problem [1] nie zostały zaprojektowane do zapewniania poprawności w każdej sytuacji - mają za zadanie szybko wykryć błędy współbieżności i je zgłosić. Implementuje się je w taki sposób by sprawdzały licznik modyfikacji kolekcji: jeżeli licznik ulegnie zmianie w trakcie iteracji, metody hasnext() lub next() zgłoszą wyjątek ConcurrentModificationException. Niestety sprawdzanie wartości nie jest synchronizowane, więc istnieje ryzyko widzenia nieświeżej wartości modyfikacji licznika, więc występuje pewne prawdopodobieństwo niezauważenia modyfikacji." Przykład użycia iteratora dla zbioru. Który z poniższych przykładów jest poprawny i dlaczego? Set<Integer> set = new HashSet<Integer>(new Integer(10)); set.addall(arrays.aslist(new Integer[]{9,8,7,6,5,4,3,2,1,0)); for (Integer i : set) if(i % 2 == 1) set.remove(i); for (Integer i : set) System.out.print(i + ", "); Set<Integer> set = new HashSet<Integer>(new Integer(10)); set.addall(arrays.aslist(new Integer[] {9,8,7,6,5,4,3,2,1,0)); for (Iterator<Integer> it = set.iterator(); it.hasnext();) if (it.next() % 2 == 1) it.remove(); for (Integer i : set) System.out.print(i + ", "); Klasa java.util.collections: - public static final List EMPTY_LIST, - public static final Map EMPTY_MAP, - public static final Set EMPTY_SET, niezmienna pusta lista, mapa, zbiór, - public static final <T> List<T> emptylist() - public static final <K,V> Map<K,V> emptymap(), - public static final <T> Set<T> emptyset(), zwraca niezmienną pustą: listę, mapę, zbiór,
2 - public static <T> Collection<T> unmodifiablecollection(collection<? extends T> c), - public static <T> List<T> unmodifiablelist(list<? extends T> list), - public static <K,V> Map<K,V> unmodifiablemap( Map<? extends K,? extends V> m), - public static <T> Set<T> unmodifiableset(set<? extends T> s), - public static <K,V> SortedMap<K,V> unmodifiablesortedmap(sortedmap<k,? extends V> m), - public static <T> SortedSet<T> unmodifiablesortedset(sortedset<t> s) zwraca niemodyfikowalny widok na podaną: kolekcję, listę, mapę, zbiór, posortowaną mapę, posortowany zbiór, - public static <T> Collection<T> synchronizedcollection(collection<t> c), - public static <T> List<T> synchronizedlist(list<t> list), - public static <K,V> Map<K,V> synchronizedmap(map<k,v> m), - public static <T> Set<T> synchronizedset(set<t> s), - public static <K,V> SortedMap<K,V> synchronizedsortedmap(sortedmap<k,v> m), - public static <T> SortedSet<T> synchronizedsortedset(sortedset<t> s) zwraca synchronizowaną: kolekcję, listę, mapę, zbiór, posortowaną mapę, posortowany zbiór. Przykład niemodyfikowalnego widoku na zbiór. Które z poniższych operacji są dozwolone? Set<Integer> collection = new HashSet<Integer>( Arrays.asList(new Integer[] { 1, 2, 3 )); Collection<Integer> unmodifiablecollection = Collections.unmodifiableCollection(collection); System.out.println("UnmodifiableCollection " + unmodifiablecollection); System.out.println(" Collection " + collection); Iterator<Integer> it = unmodifiablecollection.iterator(); while (it.hasnext()) { it.next(); it.remove(); catch (Exception e) { System.out.println("UnmodifiableCollection: Exception"); e.printstacktrace(system.out); Iterator<Integer> it = collection.iterator(); while (it.hasnext()) { it.next(); it.remove(); catch (Exception e) { System.out.println(" Collection: Exception"); e.printstacktrace(); System.out.println("UnmodifiableCollection " + unmodifiablecollection); System.out.println(" Collection " + collection);
3 Podczas iterowania kolekcji [8] zwróconej z metody Collections.synchronizedXXX() należy wykonać ręczną synchronizację. "Implementacja metody tostring() [1] w standardowych kolekcjach przechodzi przez wszystkie elementy kolekcji i wywołuje ich metodę tostring(), (...)." "Iteracja [1] często zostaje pośrednio wykonana przez metody hashcode() i equals() kolekcji, które mogą zostać wywołane, gdy kolekcja znajduje się we wnętrzu innej kolekcji. Metody containsall(), removeall(), retainall() i konstruktory przyjmujące kolekcje również stosują iteracje." Przykład synchronizowanej listy: final private static int SIZE = 4; public static void main(string[] args) throws InterruptedException { ExecutorService e = Executors.newCachedThreadPool(); for (int i = 0; i < SIZE; i++) e.execute(new Lotto()); e.shutdown(); e.awaittermination(1, TimeUnit.DAYS); synchronized(lotto.numbers){ System.out.println(Lotto.numbers); class Lotto implements Runnable { private static List<Integer> privatenumbers = new ArrayList<Integer>(); static List<Integer> numbers = public void run() { int i = 0; while (i < 10) { ++i; synchronized (numbers) { if (numbers.contains(i) == false) numbers.add(i); Kolekcje bezpieczne wątkowo [2]: "W pakiecie java.util.concurrent znajdują się następujące szybkie implementacje map, zbiorów uporządkowanych i kolejek:" - public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable, - public class ConcurrentSkipListMap<K,V> extends AbstractMap<K,V> implements ConcurrentNavigableMap<K,V>, Cloneable, Serializable, - public class ConcurrentSkipListSet<E> extends AbstractSet<E> implements NavigableSet<E>, Cloneable, Serializable, - public class ConcurrentLinkedQueue<E> extends AbstractQueue<E> implements Queue<E>, Serializable.
4 "Kolekcje te [2] zwracają tak zwane słabo spójne iteratory (ang. weakly consistent iterators). Oznacza to, że mogą one (choć nie muszą) odzwierciedlać wszystkie modyfikacje dokonane po ich skonstruowaniu. Nie zwracają one jednak dwukrotnie wartości i nie zgłaszają wyjątku ConcurrentModificationException." Klasa ConcurrentHashMap podczas blokowania wykorzystuje algorytm zwany blokowaniem paskowym [1]. "(...) implementacja ConcurrentHashMap używa tablicy 16 blokad. Każda z nich chroni 1 / 16 tablicy mieszającej. Kubełek N chroni blokada N mod 16. Zakładając, że funkcja mieszająca mniej więcej po równo rozkłada obiekty w tablicy na podstawie kluczy, każda blokada jest16-krotnie mniej obciążona." Interfejs ConcurrentMap: - V putifabsent(k key, V value) Jeżeli podany klucz nie jest odwzorowany na żadną wartość to odwzoruj go na podaną wartość. Równoważne z atomowym wykonaniem [8]: if (!map.containskey(key)) return map.put(key, value); else return map.get(key); - boolean remove(object key, Object value) Usuwa wpis dla klucza jeżeli klucz jest on odwzorowany na podaną wartość. Równoważne z atomowym wykonaniem [8]: if (map.containskey(key) && map.get(key).equals(value)) { map.remove(key); return true; else return false; - V replace(k key, V value) Zastępuje wpis dla klucza jeżeli klucz jest odwzorowany na jakąś wartość. Równoważne z atomowym wykonaniem [8]: if (map.containskey(key)) { return map.put(key, value); else return null; - boolean replace(k key, V oldvalue, V newvalue) Zastępuje wpis dla klucza jeżeli jest on odwzorowany na podaną wartość. Równoważne z atomowym wykonaniem [8]: if (map.containskey(key) && map.get(key).equals(oldvalue)) { map.put(key, newvalue); return true; else return false;
5 Tablice kopiowane przy zapisie [2] "CopyOnWriteArrayList i CopyOnWriteArraySet to bezpieczne wątkowo kolekcje, których mutatory tworzą kopie tablic. Taki sposób działania sprawdza się w sytuacjach, w których liczba wątków iterujących po kolekcji znacznie przewyższa liczbę wątków ją modyfikujących. Utworzony iterator zawiera referencję do aktualnej tablicy. Jeżeli tablica ta zostanie później zmodyfikowana, iterator ten nadal będzie miał starą tablicę, mimo że tablica kolekcji jest zamieniona. Dzięki temu starszy iterator dysponuje spójnym (choć potencjalnie przestarzałym) widokiem, do którego ma dostęp nieobciążony żadnym narzutem synchronizacji." Który z poniższych przykładów wykona się poprawnie i dlaczego? List<Integer> list = new ArrayList<Integer>(); list.add(1); list.add(2); Iterator<Integer> it = list.iterator(); while(it.hasnext()){ System.out.print(it.next() + ", "); list.add(3); catch (Exception e) { e.printstacktrace(system.out); System.out.println(); for (int i : list) System.out.print(i + ", "); List<Integer> list = new CopyOnWriteArrayList<Integer>(); list.add(1); list.add(2); Iterator<Integer> it = list.iterator(); while(it.hasnext()){ System.out.print(it.next() + ", "); list.add(3); catch (Exception e) { e.printstacktrace(system.out); System.out.println(); for (int i : list) System.out.print(i + ", ");
6 Kolejki blokujące public interface BlockingQueue<E> extends Queue<E> Sposoby postępowania w przypadku wywołania operacji, która nie może być wykonana natychmiast. Na podstawie: Dokumentacja JavaDoc 1.6 Zgłasza wyjątek Zwraca specjalną wartość Blokuje się Blokuje się na określony czas Wprowadź (Insert) add(e) offer(e) put(e) offer(e, time, unit) Usuń (Remove) remove() poll() take() poll(time, unit) Sprawdź (Examine) element() peek() - - Implementacje BlockingQueue: - public class ArrayBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable, - public class DelayQueue<E extends Delayed> extends AbstractQueue<E> implements BlockingQueue<E>, - public class LinkedBlockingDeque<E> extends AbstractQueue<E> implements BlockingDeque<E>, Serializable, - public class PriorityBlockingQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable, - public class SynchronousQueue<E> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable. public interface BlockingDeque<E> extends BlockingQueue<E>, Deque<E> Sposoby postępowania w przypadku wywołania operacji, która nie może być wykonana natychmiast. Na podstawie: Dokumentacja JavaDoc 1.6 Pierwszy element Zgłasza wyjątek Zwraca specjalną wartość Blokuje się Blokuje się na określony czas Wprowadź (Insert) addfirst(e) offerfirst(e) putfirst(e) offerfirst(e, time, unit) Usuń (Remove) removefirst() pollfirst() takefirst() pollfirst(time, unit) Sprawdź (Examine) getfirst() peekfirst() - - Ostatni element Zgłasza wyjątek Zwraca specjalną wartość Blokuje się Blokuje się na określony czas Wprowadź (Insert) addlast(e) offerlast(e) putlast(e) offerlast(e, time, unit) Usuń (Remove) removelast() polllast() takelast() polllast(time, unit) Sprawdź (Examine) getlast() peeklast() - - Implementacja BlockingQueue: - public class LinkedBlockingDeque<E> extends AbstractQueue<E> implements BlockingDeque<E>, Serializable.
7 Przykład użycia LinkedBlockingQueue: class Producer implements Runnable { private boolean sleep; private int i; Producer(boolean sleep){ this.sleep = public void run() { while (true) produce(); catch (InterruptedException e) { e.printstacktrace(); final void produce() throws InterruptedException { System.out.println("> " + ++i); TestCollections.queue.put(i); System.out.println(">> " + i); if(sleep) TimeUnit.SECONDS.sleep(2); class Consumer implements Runnable { private boolean sleep; private int i; Consumer(boolean sleep){ this.sleep = public void run() { while (true) consume(); catch (InterruptedException e) { e.printstacktrace(); final void consume() throws InterruptedException { System.out.println("< " + ++i); int tmp = TestCollections.queue.take(); System.out.println("<< " + i + ":" + tmp); if(sleep) TimeUnit.SECONDS.sleep(2); static LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<Integer>(4); public static void main(string[] args) throws Exception { new Thread(new Producer(false)).start(); new Thread(new Consumer(true)).start();
8 Inne kolekcje bezpieczne wątkowo [2]: - java.util.vector<e>, - java.util.hashtable<k,v>. Przykładowa treść laboratorium: 1. Stworzyć aplikacje składające się z kilku wątków zapisujących i odczytujący dane przechowywane w zbiorach: - HashSet z własną synchronizacją wykorzystującą metody lub bloki synchronizowane, - Collections.synchronizedSet(new HashSet()), - ConcurrentSkipListSet, - CopyOnWriteArraySet. 2. Stworzyć aplikację symulującą działanie konserwatora budynku. W budynku mieszka kilka osób, modelowanych jako wątki. Każda z nich co jakiś czas sprawdza stan swojego mieszkania (np. co 10 sekundę) i wykrywa awarię z podanym prawdopodobieństwem (np. 0,1). Konserwator modelowany jest także jako wątek. Do komunikacji pomiędzy mieszkańcami a konserwatorem należy zastosować klasę implementującą kolejkę blokującą BlockingQueue. Każdy z mieszkańców, który zauważy awarię zgłasza ją, czyli dodaje ją do kolejki blokującej. Konserwator pobiera opis awarii z kolejki i naprawia ją. Każda naprawa zajmuje czas (np. losowo wybrany od 1 do 5 sekund). Jeżeli nie ma zgłoszeń awarii konserwator czeka. Należy przetestować działanie aplikacji dla różnych wartości: liczby osób, odstępu pomiędzy sprawdzeniami czy wystąpiła awaria, prawdopodobieństwa awarii oraz zakresu czasu naprawy. Literatura: [1] Goetz B., Peierls T., Bloch J., Bowbeer J., Holmes D., Lea D., Java Współbieżność dla praktyków, Helion 2007 [2] Horstmann C.S., Cornell G., Java Podstawy, Helion, Wyd. VIII, 2009 [3] Horstmann C.S., Cornell G., Java Techniki zaawansowane, Helion, Wyd. VIII, 2009 [4] Eckel B.: Thinking in Java, Wyd. IV, Helion, [5] Bloch J.: Java Efektywne programowanie, Wyd. II, Helion, [6] Brackeen D., B. Barker, L. Vanhelsuwe: Java Tworzenie gier, Helion, [7] Silberschatz A., Galvin P. B., Gagne G.: Podstawy systemów operacyjnych, WNT, 2005 [8] Dokumentacja JavaDoc 1.6 htp://java.sun.com [9] Dokumentacja JavaDoc 1.7 htp://java.sun.com [10] The Java Language Specification, Third Edition,
Programowanie współbieżne Laboratorium nr 12
Programowanie współbieżne Laboratorium nr 12 Uwaga!!! Wyniki uruchomionych programów mogą zależeć od sprzętu (ilość procesorów, rdzeni itp.), systemu operacyjnego, obciążenia systemu operacyjnego, ilości
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ęć,
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(),
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
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
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
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
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{
Programowanie współbieżne Laboratorium nr 14. Synchronizatory
Programowanie współbieżne Laboratorium nr 14 Synchronizatory "Synchronizator [1] to dowolny obiekt koordynujący przepływ sterowania wątków na podstawie jego stanu." "Wszystkie synchronizatory [1] maja
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.
TimeUnit.SECONDS.sleep(1); } } catch (InterruptedException e) { System.out.println("INTERRUPT " + System.nanoTime() + " " + isinterrupted()); }
Programowanie współbieżne Laboratorium nr 15 Anulowanie zadań "Nie istnieje bezpieczny sposób zatrzymania wątku Javy z wykorzystaniem wywłaszczenia [1], więc nie istnieje również bezpieczny sposób zatrzymania
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
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/
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
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
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
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
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
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
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/
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)
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
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:
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
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
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
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
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
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
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
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
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
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
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
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.
Laboratorium z przedmiotu: Inżynieria Oprogramowania INEK Instrukcja 7
Instrukcja 7 Laboratoria 9, 10 Opracowanie diagramów sekwencji dla wybranych przypadków użycia reprezentujących usługi oprogramowania wynikających również z wykonanych diagramów czynności; definicja operacji
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
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
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
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
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,
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
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
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
TYPY GENERYCZNE (GENERICS)
TYPY GENERYCZNE (GENERICS) ZAGADNIENIA: wprowadzenie, konwencje, metody, typy surowe parametry ograniczone podtypy, dziedziczenie, symbole wieloznaczne, ograniczenia. MATERIAŁY: http://docs.oracle.com/javase/tutorial/java/generics/
Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)
MAS dr. Inż. Mariusz Trzaska Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1) Zagadnienia o Podstawy o Kontrolowanie sterowania o Klasy o Interfejsy o Obsługa błędów o Pojemniki o System
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
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,
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
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
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
Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania
Instrukcja 2 Laboratorium z Podstaw Inżynierii Oprogramowania Opis biznesowy świata rzeczywistego Wymagania funkcjonalne i niefunkcjonalne aplikacji Diagram przypadków życia Diagramy klas i sekwencji:
Lista, Stos, Kolejka, Tablica Asocjacyjna
Lista, Stos, Kolejka, Tablica Asocjacyjna Listy Lista zbiór elementów tego samego typu może dynamicznie zmieniać rozmiar, pozwala na dostęp do poszczególnych elementów Typowo dwie implementacje: tablicowa,
Comparable<Klasa_uzytkownika>
Przechowywanie obiektów w pamięci programu Część II (obiekty typów definiowanych przez użytkownika) Obiekty typów definiowanych przez użytkownika muszą być przystosowane do przechowywania w pojemnikach
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
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
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ć
1. Co można powiedzieć o poniższym kodzie?
1. Co można powiedzieć o poniższym kodzie? void m(int a) { int m(string s){return Integer.parseInt(s); String m(int a){ return Integer.toString(a); a) Jego kompilacja powiedzie się b) Jego kompilacja nie
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
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
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
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
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.
Algorytmy i Struktury Danych. Anna Paszyńska
Algorytmy i Struktury Danych Anna Paszyńska Tablica dynamiczna szablon Array Zbiory Zbiory template class Container {public: virtual ~Container() { }; virtual int Count() const = 0;
Kolekcje w Javie cz. 1
Kolekcje w Javie cz. 1 Programowanie obiektowe Jacek Sroka na podstawie materiałów Janusza Jabłonowskiego 8 kwietnia 2013 Po co są kolekcje? Po co są kolekcje? A po co są programy? Żeby manipulować danymi.
JAVA W SUPER EXPRESOWEJ PIGUŁCE
JAVA W SUPER EXPRESOWEJ PIGUŁCE Obiekt Obiekty programowe to zbiór własności i zachowań (zmiennych i metod). Podobnie jak w świecie rzeczywistym obiekty posiadają swój stan i zachowanie. Komunikat Wszystkie
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
Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników
Języki i metody programowania Java Lab4 podejście obiektowe, zastosowanie pojemników https://docs.oracle.com/javase/tutorial/ http://zofia.kruczkiewicz.staff.iiar.pwr.wroc.pl/wyklady/pojava/javazk4_2.pdf
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.
Programowanie w Javie - wykład 13 Kolekcje c.d. ( mapy)
1 Programowanie w Javie - wykład 13 Kolekcje c.d. ( mapy) 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/
import java.util.*; public class ListExample { public static void main(string args[]) { List<String> lista1= new ArrayList<String> ();
collection Zadanie.1 Napisać program, który: a) tworzy listę (implementacja tablicy ArrayList), dodając po jednym elemencie (korzystając z operacji podstawowej add). Następnie wypisuje całą listę, drugi
Aplikacje Internetowe. Najprostsza aplikacja. Komponenty Javy. Podstawy języka Java
Aplikacje Internetowe Podstawy języka Java Najprostsza aplikacja class Hello { public static void main(string[] args) { System.out.println("Hello World!"); Komponenty Javy JRE Java Runtime Environment
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,
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
Plan wykładu CORBA. Cechy aplikacji rozproszonych. Aplikacje rozproszone
Plan wykładu CORBA Wprowadzenie Architektura CORBA IDL język definicji interfejsów ORB Object Request Broker Usługi i POA Aplikacje CORBA tworzenie serwera tworzenie klienta Aplikacje rozproszone Cechy
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,
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));
API STREAM WYRAŻENIA LAMBDA
Wykorzystano fragmenty wykładów M. Piotrowskiego i M. Wójcika KOLEKCJE API STREAM WYRAŻENIA LAMBDA Waldemar Korłub Platformy Technologiczne KASK ETI Politechnika Gdańska 2 Kolekcje Kolekcje 3 Kolekcja
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,
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....................................................................................
Laboratorium 03: Podstawowe konstrukcje w języku Java [2h]
1. Typy. Java jest językiem programowania z silnym systemem kontroli typów. To oznacza, że każda zmienna, atrybut czy parametr ma zadeklarowany typ. Kompilator wylicza typy wszystkich wyrażeń w programie
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
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
Algorytmy i Struktury Danych.
Algorytmy i Struktury Danych. Podstawowe struktury danych, cd. Wykład na podstawie ksiażki Roberta Sedgewicka i Kevina Wayne: Algorithms. Furth Edition. Princeton University dr hab. Bożena Woźna-Szcześniak
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
Wywoływanie metod zdalnych
Wywoływanie metod zdalnych model systemu Wywoływanie metod zdalnych aplikacja kliencka interfejs obiekt serwer Podejście obiektowe do budowy systemów rozproszonych proxy szkielet sieć Istota podejścia
Wykład 6. Rafał Skinderowicz
Wykład 6 Rafał Skinderowicz Plan wykładu Wykonawcy (Executors) Kolekcje synchronizowane i współbieżne Programowanie współbieżne a GUI 2 Wykonawcy w Javie Interfejs java.util.concurrent.executor pozwala
Klasy i obiekty cz II
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Klasy i obiekty cz II Hermetyzacja, mutatory, akcesory, ArrayList Rozwijamy aplikację Chcemy, aby obiekty klasy
Podejście obiektowe do budowy systemów rozproszonych
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja kliencka interfejs serwer stub szkielet sieć Dariusz Wawrzyniak (IIPP) 1 Mechanizm
Remote Method Invocation 17 listopada Dariusz Wawrzyniak (IIPP) 1
interfejs (w języku Java), wywiedziony z Remote obiekt Podejście obiektowe do budowy systemów rozproszonych aplikacja kliencka interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
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
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ę,
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
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
Programowanie obiektowe
Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.
1. Czynności przygotowujące aplikację działającą na platformie Java SE Biblioteka5 (należy ją pobrać z załącznika z p.1)
Instrukcja tworzenia aplikacji EE na podstawie aplikacji z dostępem do bazy danych, prezentowanej na zajęciach lab.5 z PIO umożliwiająca przez sieć dostęp wielu użytkownikom. Projektowanie i wdrażanie
Programowanie obiektowe
Programowanie obiektowe IV. Interfejsy i klasy wewnętrzne Małgorzata Prolejko OBI JA16Z03 Plan Właściwości interfejsów. Interfejsy a klasy abstrakcyjne. Klonowanie obiektów. Klasy wewnętrzne. Dostęp do
Wykład 4. Klasa List Kolejki Stosy Słowniki
Wykład 4 Klasa List Kolejki Stosy Słowniki Klasa List Poważną niedogodnością tablic jako kolekcji danych jest fakt, że muszą one mieć stały rozmiar. Programista musi wiedzieć z góry ile miejsca powinien
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
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