Programowanie współbieżne Laboratorium nr 14. Synchronizatory
|
|
- Grażyna Wójtowicz
- 8 lat temu
- Przeglądów:
Transkrypt
1 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 pewne wspólne właściwości strukturalne. Hermetyzują stan, który określa, czy wątek przybywający do synchronizatora może przejść czy raczej musi zaczekać na wykonanie zadania; zawierają metody modyfikujące stan i sposoby wydajnego oczekiwania na zmianę stanu przez kod." CountDownLatch "Obiekt klasy CountDownLatch [2] zmusza wątki do oczekiwania, aż licznik dojdzie do zera. Zatrzask ten jest jednorazowego użytku, to znaczy, jeśli licznik dojdzie do zera, nie można go zwiększyć." "Klasa CountDownLatch (ang. latch - zatrzask) [4] służy do synchronizowania jednego bądź wielu zadań przez wymuszanie oczekiwania na zakończenie zestawu operacji wykonywanych przez inne zadania." Klasa java.util.concurrent.countdownlatch (wybrane metody): - public CountDownLatch(int count) - konstruktor tworzący zatrzask z parametrem określającym ile razy metoda countdown() musi zostać wywołana zanim wątki będą mogły "przejść przez metodę" await(), - public void await(), public boolean await(long timeout, TimeUnit unit) - wywołanie metody powoduje, że bieżący wątek czeka na osiągnięcie przez zatrzask wartości zero; istnieje także przeciążona wersja tej metody posiadająca dodatkowe ograniczenie czasowe., - public void countdown() - metoda dekrementuje wartość wewnętrznego licznika zatrzasku, jeżeli nową wartością jest zero wszystkie oczekujące wątki są odblokowane. Przykład: Egzaminator (klasa Examiner) przeprowadza egzamin na grupie studentów (klasa Student). Po przygotowaniu pytań przez egzaminatora wszyscy studenci równocześnie rozpoczynają egzamin. Każdy student może w dowolnej chwili zakończyć egzamin. Nie jest podany maksymalny czas trwania egzaminu. Po zakończeniu egzaminu przez wszystkich studentów egzaminator sprawdza prace. class Student extends Thread { final private Examiner ex; Student(Examiner ex) { this.ex = ex; public void run() { try { String question = ex.getquestion(this); String answer = exam(question); ex.returnanswer(this, answer); catch (InterruptedException e) { System.err.printf("Student %2d: the exam was cancelled%n", this.getid()); private String exam(string question) throws InterruptedException { TimeUnit.SECONDS.sleep( new Random(hashCode() + getid()).nextint(10)); return "" + this.getname();
2 public class Examiner { final private static int STUDENT_NUMER = 4; final private static CountDownLatch beginexam = new CountDownLatch(1); final private static CountDownLatch finishexam = new CountDownLatch(STUDENT_NUMER); final private Map<Long, String> answers = new ConcurrentHashMap<Long, String>(); String getquestion(student s) throws InterruptedException { Examiner.beginExam.await(); System.err.printf("Student %2d began the exam at %12d%n", s.getid(), System.nanoTime()); return "What is your name?"; void returnanswer(student s, String answer) { Examiner.finishExam.countDown(); System.err.printf("Student %2d finished the exam at %12d%n", s.getid(), System.nanoTime()); this.answers.put(s.getid(), answer); private void beginexam() { Examiner.beginExam.countDown(); System.err.printf("Examiner began the exam at %12d%n", System.nanoTime()); private void finishexam() throws InterruptedException { Examiner.finishExam.await(3, TimeUnit.SECONDS); System.err.printf("Examiner finished the exam at %12d%n", System.nanoTime()); System.err.println("Answers: " + answers); public static void main(string[] args) { try { Examiner ex = new Examiner(); for (int i = 0; i < STUDENT_NUMER; i++) new Student(ex).start(); ex.beginexam(); ex.finishexam(); catch (InterruptedException e) { System.err.printf("Examiner: the exam was cancelled%n"); CyclicBarier "Klasa CyclicBarier [4] wykorzystywana jest w sytuacjach, w których potrzeba utworzyć grupę zadań, uruchomić je współbieżnie, a potem oczekiwać na ich zakończenie warunkujące przejście do następnego etapu programu (coś w rodzaju join()). Wszystkie równolegle wykonywane zadania są wyrównywane na barierze uniemożliwiającej przedwczesne kontynuowanie procesów programu. Model klasy bardzo przypomina klasę CountDownLatch, z tym że obiekty klasy CountDownLatch to 'jednorazówki', a egzemplarze CyclicBarier można swobodnie regenerować." Klasa java.util.concurrent.cyclicbarrier (wybrane metody): - public CyclicBarrier(int parties) - konstruktor tworzący cykliczną barierę, jako parametr podaje się liczbę wątków konieczną do otworzenia bariery, - public CyclicBarrier(int parties, Runnable barrieraction) - konstruktor tworzący cykliczną barierę, jako
3 pierwszy parametr podaje się liczbę wątków konieczną do otworzenia bariery, w drugim parametrze można przekazać akcję bariery wykonywaną gdy wszystkie wątki dotrą do bariery, ale przed zwolnieniem blokady (akcja wykonywana jest przez watek, który dotarł jako ostatni), - public int await() - wywołanie metody powoduje, że bieżący wątek czeka aż liczba wątków, które wywołają tą metodę osiągnie wartość podaną w konstruktorze; istnieje także przeciążona wersja tej metody posiadająca dodatkowe ograniczenie czasowe. Przykład: Firma (klasa Company) składa się z kilku działów (klasa Department). Każdy dział na koniec miesiąca wylicza swoją sumaryczną sprzedaż (atrybut sales). Miesięczna premia, w każdym z działów, wyliczana jest jako suma: - 10% z sumarycznej sprzedaży danego działu, - 10% z sumarycznej sprzedaży wszystkich działów podzielonej przez liczbę działów. class Department extends Thread { private volatile double sales; final private Random r; final private Company c; final private int deptno; Department(Company c, int deptno) { this.c = c; this.deptno = deptno; r = new Random(hashCode() + getid()); double getdepartmentsales() { return sales; public void run() { try { while (true) { calculatesales(); System.err.printf( "Dept. No. %1d Sales : %4.0f (%15d)%n", this.deptno, sales, System.nanoTime()); double globalpremiumpart = c.getglobalpremiumpart(); System.err.printf( "Dept. No. %1d Total premium: %4.0f (%15d)%n", this.deptno, (0.1 * sales + globalpremiumpart), System.nanoTime()); catch (InterruptedException e) { e.printstacktrace(); catch (BrokenBarrierException e) { e.printstacktrace(); void calculatesales() throws InterruptedException { TimeUnit.SECONDS.sleep(r.nextInt(10)); sales = r.nextint(1000);
4 public class Company implements Runnable { final private static int NUMBER_OF_DEPARMENTS = 3; final private Department[] departments = new Department[NUMBER_OF_DEPARMENTS]; final private CyclicBarrier barrier; private double globalpremiumpart; private int monthno; public static void main(string[] args) { new Company(); Company() { barrier = new CyclicBarrier(NUMBER_OF_DEPARMENTS, this); for (int i = 0; i < departments.length; i++) { departments[i] = new Department(this, i); departments[i].start(); public void run() { double globalsales = 0; for (int i = 0; i < departments.length; i++) { double tmp = departments[i].getdepartmentsales(); System.err.printf("Dept. No. %1d %4.0f%n", i, tmp); globalsales += tmp; globalpremiumpart = 0.1 * globalsales / NUMBER_OF_DEPARMENTS; System.err.printf(" Month No. %1d Global part of the premium: %4.0f%n", monthno++, globalpremiumpart); double getglobalpremiumpart() throws InterruptedException, BrokenBarrierException { barrier.await(); return globalpremiumpart; Exchanger "Obiekty klasy Exchanger [2] znajdują zastosowanie, gdy dwa wątki działają na dwóch egzemplarzach jednego bufora danych. Z reguły jeden z nich zapełnia bufor, a drugi pobiera te dane. Kiedy oba watki są gotowe, wymieniają się buforami." "Klasa Exchanger [4] implementuje barierę, która wymienia obiekty pomiędzy dwoma zadaniami. Kiedy zadanie dociera do takiej bariery, posiada pewien obiekt, a kiedy opuszcza barierę, jego miejsce zajmuje inny obiekt, będący w posiadaniu innego zadania. Bariery wymiany są wykorzystywane, kiedy jedno z zadań wytwarza obiekty kosztowne w produkcji, a inne zadanie konsumuje te obiekty; typowo dochodzi wtedy niejako do recyclingu obiektów, co zmniejsza koszt wytwarzania." Klasa java.util.concurrent.exchanger<v> (wybrane metody): - public Exchanger() - konstruktor bezargumentowy, - public V exchange(v x) - wywołanie metody spowoduje, że aktualny wątek rozpocznie czekanie na inny wątek, po przybyciu drugiego wątku wątki wymienią się obiektami; istnieje także przeciążona wersja tej metody posiadająca dodatkowe ograniczenie czasowe.
5 Przykład: Przykład dotyczy straży pożarnej (klasa FireBrigade), w której pracują strażacy (abstrakcyjna klasa FireFighter). Strażacy dzielą się na dwie kategorie: - odpowiedzialnych za napełnianie wiaderek (klasa FireFighterFill), - odpowiedzialnych za gaszenie pożaru czyli opróżnianie wiaderek (klasa FireFighterEmpty). Podczas gaszenia pożaru strażacy pracują w parach wymieniając się wiaderkami (klasa Bucket). Strażak napełniający wiaderko podaje pełne wiaderko strażakowi gaszącemu pożar. Natomiast strażak gaszący pożar podaje puste wiaderko strażakowi napełniającemu wiaderka. class Bucket { volatile boolean empty; private int number; Bucket(int number) { this.number = number; public String tostring() { return "Bucket" + number + ": " + (empty? "empty" : "filled"); abstract class FireFighter extends Thread { protected final Random r; private final Exchanger<Bucket> exchanger; private Bucket b; FireFighter(Exchanger<Bucket> exchanger, Bucket initialbucket) { r = new Random(this.hashCode()); this.exchanger = exchanger; this.b = initialbucket; abstract void work(bucket b) throws InterruptedException; public void run() { try { while (true) { System.err.printf("%-17s start the work (%12d)%n", this, System.nanoTime()); work(b); System.err.printf("%-17s end System.nanoTime()); b = exchanger.exchange(b); catch (InterruptedException e) { e.printstacktrace(); the work (%12d)%n", this, public String tostring() { return this.getclass().getsimplename();
6 class FireFighterFill extends FireFighter { FireFighterFill(Exchanger<Bucket> exchanger, Bucket initialbucket) { super(exchanger, initialbucket); void work(bucket b) throws InterruptedException { TimeUnit.SECONDS.sleep(r.nextInt(10)); b.empty = false; System.err.println(b); class FireFighterEmpty extends FireFighter { FireFighterEmpty(Exchanger<Bucket> exchanger, Bucket initialbucket) { super(exchanger, initialbucket); void work(bucket b) throws InterruptedException { TimeUnit.SECONDS.sleep(r.nextInt(10)); b.empty = true; System.err.println(b); public class FireBrigade { private static Exchanger<Bucket> exchanger = new Exchanger<Bucket>(); private static Bucket b0 = new Bucket(0); private static Bucket b1 = new Bucket(1); public static void main(string[] args) { FireFighter f0 = new FireFighterFill(exchanger, b0); f0.start(); FireFighter f1 = new FireFighterEmpty(exchanger, b1); f1.start(); Semaphore "Z założenia semafor [2] służy do zarządzania pewną liczbą zezwoleń (ang. permit). Aby przejść obok semafora, wątek próbuje uzyskać zezwolenie, wywołując w tym celu metodę acquire. Liczba dostępnych zezwoleń jest ograniczona, co pozwala na kontrolę liczby wątków, które mogą przejść dalej. Inne wątki mogą wydawać zezwolenia za pomocą metody release. Nie istnieją żadne obiekty zezwoleń. Semafor przechowuje tylko licznik zezwoleń." Klasa java.util.concurrent.semaphore (wybrane metody): - public Semaphore(int permits) - tworzy semafor z podaną liczbą zezwoleń, - public void acquire() - próbuje uzyskać pozwolenie, jeżeli żadne pozwolenie nie jest dostępne blokuje się, istnieje także przeciążona wersja tej metody pozwalająca uzyskać więcej niż jedno pozwolenie, - public int availablepermits() - zwraca ilość aktualnie dostępnych pozwoleń, - public void release() - zwraca pozwolenie, istnieje także przeciążona wersja tej metody pozwalająca zwrócić więcej niż jedno pozwolenie.
7 Przykład: Przykład dotyczy wypożyczalni samochodów (klasa Rental<Car>). Typ ogólny Rental<V> może zostać wykorzystany także z dowolną inną klasą. final public class Rental<V> { private static class Entry<E> { boolean used; final E object; Entry(E object) { this.object = object; final private Semaphore permits; final private Collection<Entry<V>> entries = new HashSet<Entry<V>>(); Rental(Collection<V> collection) { if (collection == null) throw new NullPointerException(); for (V e : collection) { if (e == null) throw new NullPointerException(); entries.add(new Entry<V>(e)); permits = new Semaphore(entries.size()); int getavailable() { return permits.availablepermits(); public V rent() throws InterruptedException { permits.acquire(); return getnext(); private synchronized V getnext() { for (Entry<V> e : entries) if (!e.used) { e.used = true; return e.object; return null; public void giveback(v object) { if (tryreturn(object)) permits.release(); private synchronized boolean tryreturn(v c) { for (Entry<V> e : entries) if (e.object == c) { if (!e.used) return false; e.used = false; return true; return false;
8 class Car { public class TestCarRental { public static void main(string[] args) throws InterruptedException { ArrayList<Car> cars = new ArrayList<Car>(); for (int i = 0; i < 4; i++) cars.add(new Car()); Rental<Car> carrental = new Rental<Car>(cars); Car c = carrental.rent(); System.out.println("Rented car : " + c); Car c2 = carrental.rent(); System.out.println("Rented car : " + c2); carrental.giveback(c2); carrental.giveback(c2); Car tmp = new Car(); carrental.giveback(tmp); System.out.println("Returned car : " + tmp); SynchronousQueue "Kolejka synchroniczna [2] to mechanizm dobierania w pary wątków producenta i konsumenta. Kiedy jeden wątek wywoła metodę put na rzecz obiektu typu SynchronousQueue, zostaje on zablokowany dopóki inny watek nie wywoła metody take i odwrotnie. W przeciwieństwie do klasy Exchanger, w tym przypadku dane są przesyłane tylko w jednym kierunku - od producenta do konsumenta. Mimo, iż klasa SynchronousQueue implementuje interfejs BlockingQueue, nie jest z założenia kolejką. Nie zawiera żadnych elementów, czyli jej metoda size zawsze zwraca wartość 0." Klasa java.util.concurrent.synchronousqueue<e> extends AbstractQueue<E> implements BlockingQueue<E>, Serializable. Informacje na temat kolejki blokujące public interface BlockingQueue<E> extends Queue<E> można znaleźć na poprzednim wykładzie. Przykład: Przykład dotyczy sztafety (klasa Relay). W sztafecie mamy czterech biegaczy (klasa Runner), którzy podczas zmiany (atrybut change typu ArrayList<SynchronousQueue<Baton>>) przekazują między sobą pałeczkę sztafetową (klasa Baton). Sztafeta Change (zmiana) Runner (biegacz)
9 public class Relay { final private static int RUNNER_NUMBER = 4; final private static int CHANGES_NUMBER = RUNNER_NUMBER - 1; final private static Baton baton = new Baton(); final private static HashSet<Runner> runners = new HashSet<Runner>(); final private static ArrayList<SynchronousQueue<Baton>> changes = new ArrayList<SynchronousQueue<Baton>>(); public static void main(string[] args) { for (int i = 0; i < CHANGES_NUMBER; i++) changes.add(new SynchronousQueue<Baton>(true)); for (int i = 0; i < RUNNER_NUMBER; i++) switch (i) { case 0: runners.add(new Runner(i, baton, null, changes.get(0))); break; case RUNNER_NUMBER - 1: runners.add(new Runner(i, null, changes.get(i - 1),null)); break; default: runners.add(new Runner(i, null, changes.get(i - 1), changes.get(i))); for (Runner r : runners) r.start(); class Baton { class Runner extends Thread { final private Random r; private final String tostring; final private SynchronousQueue<Baton> changebefore; final private SynchronousQueue<Baton> changeafter; private Baton baton; public Runner(int runnernumber, Baton baton, SynchronousQueue<Baton> changebefore, SynchronousQueue<Baton> changeafter) { r = new Random(System.nanoTime() + hashcode()); String changebeforetostring = changebefore!= null? changebefore.getclass().getsimplename() + "@" + Integer.toHexString(changeBefore.hashCode()) : "X"; String changeaftertostring = changeafter!= null? changeafter.getclass().getsimplename() + "@" + Integer.toHexString(changeAfter.hashCode()) : "X"; tostring = changebeforetostring + " >-> " + runnernumber + " >-> " + changeaftertostring; this.baton = baton; this.changebefore = changebefore; this.changeafter = changeafter; public String tostring() { return tostring;
10 public void run() { try { if (baton == null) baton = changebefore.take(); runlap(); if (changeafter!= null) changeafter.put(baton); catch (InterruptedException e) { e.printstacktrace(); private void runlap() throws InterruptedException { System.out.println(this + " starts the lap "); TimeUnit.SECONDS.sleep(r.nextInt(10)); System.out.println(this + " ends the lap "); Przykładowa treść laboratorium: 1. Stworzyć przykładowe aplikacje prezentujące możliwości następujących synchronizatorów: - CountDownLatch, - CyclicBarrier, - Exchanger, - Semaphore, - SynchronousQueue. 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 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 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
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
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
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)
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:
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
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
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.
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
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
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/
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
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
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....................................................................................
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
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
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ć
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
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.
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
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
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,
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/
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 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ęzyki Programowania II Wykład 3. Java podstawy. Przypomnienie
Języki Programowania II Wykład 3 Java podstawy Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo Przypadki użycia = opowiastki o używaniu systemu = wymagania
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,
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
Programowanie obiektowe
Przygotował: Jacek Sroka 1 Programowanie obiektowe Wykład 3 Java podstawy Przygotował: Jacek Sroka 2 Przypomnienie Analiza, projektowanie, programowanie, testowanie, wdrażanie Iteracyjnie nie kaskadowo
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
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,
Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 11.1 abstrakcyjne Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post
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
Systemy Rozproszone - Ćwiczenie 4
Systemy Rozproszone - Ćwiczenie 4 1 Synchronizacja wątków: myjnia samochodowa Poniżej znajduje się przykład ilustrujący klasyczny problem synchronizacji wątków. Obiekt klasy Car jest współdzielony przez
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.
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
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
Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
J. Ułasiewicz Programowanie aplikacji współbieżnych 1 11 Semafor nie jest mechanizmem strukturalnym. Aplikacje pisane z użyciem semaforów są podatne na błędy. Np. brak operacji sem_post blokuje aplikację.
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
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ć
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
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
KLASY, INTERFEJSY, ITP
KLASY, INTERFEJSY, ITP ZAGADNIENIA: Klasy, modyfkatory dostępu, pakiety. Zmienne i metody statyczne. Klasy abstrakcyjne, dziedziczenie. Interfejsy. Komentarze i javadoc, http://th-www.if.uj.edu.pl/zfs/ciesla/
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
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
Wykład 7: Pakiety i Interfejsy
Wykład 7: Pakiety i Interfejsy Plik Źródłowy w Javie Składa się z: instrukcji pakietu (pojedyncza, opcjonalna) instrukcji importujących (wielokrotne, opcjonalne) deklaracji klasy publicznej (pojedyncza,
Stanowe komponenty sesyjne
Stanowe komponenty sesyjne 1. Porównanie komponentów stanowych i bezstanowych. 2. Cykl życia stanowego komponentu sesyjnego, 3. Komponenty sesyjne a kontekst utrwalania, 4. Zagnieżdżanie komponentów sesyjnych,
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
Programowanie obiektowe i zdarzeniowe
Marek Tabędzki Programowanie obiektowe i zdarzeniowe 1/23 Programowanie obiektowe i zdarzeniowe wykład 6 polimorfizm Na poprzednim wykładzie: dziedziczenie jest sposobem na utworzenie nowej klasy na podstawie
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
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));
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
Metody Metody, parametry, zwracanie wartości
Materiał pomocniczy do kursu Podstawy programowania Autor: Grzegorz Góralski ggoralski.com Metody Metody, parametry, zwracanie wartości Metody - co to jest i po co? Metoda to wydzielona część klasy, mająca
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
Przykład użycia iteratora dla zbioru. Który z poniższych przykładów jest poprawny i dlaczego?
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
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,
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
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
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
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
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 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
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
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
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
7 Pewne uzupełnienia Przepływ sterowania Układacze... 6
Spis treści 1 Wątki 1 2 Tworzenie wątków 1 3 Synchronizacja 3 4 Dodatki 3 5 Algorytmy sortowania 4 6 Klasa Runnable 4 7 Pewne uzupełnienia 5 7.1 Przepływ sterowania......................... 5 7.2 Układacze...............................
Polimorfizm, metody wirtualne i klasy abstrakcyjne
Programowanie obiektowe Polimorfizm, metody wirtualne i klasy abstrakcyjne Paweł Rogaliński Instytut Informatyki, Automatyki i Robotyki Politechniki Wrocławskiej pawel.rogalinski pwr.wroc.pl Polimorfizm,
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
Zaawansowane aplikacje WWW - laboratorium
Zaawansowane aplikacje WWW - laboratorium Przetwarzanie XML (część 2) Celem ćwiczenia jest przygotowanie aplikacji, która umożliwi odczyt i przetwarzanie pliku z zawartością XML. Aplikacja, napisana w
Wykład 12. Programowanie serwera MS SQL 2005 w C#
Wykład 12 Programowanie serwera MS SQL 2005 w C# Budowa procedur składowanych w C# Budowa funkcji składowanych w C# Wykorzystanie funkcji składowanych w C# po stronie klienta Tworzenie typów definiowanych
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
Wykład 6: Dziedziczenie
Wykład 6: Dziedziczenie Dziedziczenie Jeden z filarów obiektowości. Budowa jednej klasy na bazie drugiej, przez dodawanie/przesłanianie jej składowych: nad-klasa klasa bazowa pod-klasa klasa pochodna od
Wykład 5. Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB
Wykład 5 Synchronizacja (część II) Wojciech Kwedlo, Wykład z Systemów Operacyjnych -1- Wydział Informatyki PB Wady semaforów Jeden z pierwszych mechanizmów synchronizacji Generalnie jest to mechanizm bardzo
Języki i metody programowania Java. Wykład 2 (część 2)
Języki i metody programowania Java INF302W Wykład 2 (część 2) Autor Dr inż. Zofia Kruczkiewicz 1 Struktura wykładu 1. Identyfikacja danych reprezentowanych przez klasy podczas opracowania koncepcji prostego
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,
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
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
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
Zofia Kruczkiewicz, Programowanie obiektowe - java, wykład 2 1
PODSTAWOWE ELEMENTY JĘZYKA JAVA WYRAŻENIA, OPERATORY, INSTRUKCJE 1. Operatory arytmetyczne +, -, /,*, % Przykład 1 programu z interfejsem konsolowym public class Lab2_1 // Tworzy generator liczb losowych,
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
Tworzenie i wykorzystanie usług
Strona 1 Co to jest usługa w systemie Android? Usługi HTTP Obsługa wywołania HTTP GET Obsługa wywołania HTTP POST Obsługa wieloczęściowego wywołania HTTP POST Usługi lokalne Usługi zdalne Tworzenie usługi
Przykład -
Polimorfizm Przykład - http://rpodhajny.wordpress.com klasa bazowa A, oraz klasy pochodne B1, B2,, Bn (dziedziczące po klasie bazowej). niektóre klasy pochodne chcą mieć możliwość skorzystania z metody
dziedziczenie - po nazwie klasy wystąpią słowa: extends nazwa_superklasy
PODSTAWOWE ELEMENTY JĘZYKA JAVA TYPY DANYCH, OPERATORY I INSTRUKCJE 1. Definicja klasy, dziedziczenie, implementowanie metod interfejsów class nazwa_klasy //ciało klasy Klasa: przed słowem class moŝe wystąpić
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
Kurs programowania. Wykład 13. Wojciech Macyna. 14 czerwiec 2017
Wykład 13 14 czerwiec 2017 Java vs cpp - podobieństwa Podobny sposób definiowania klas. Występowanie typów podstawowych: boolean, char, byte, short, int, long, float, double. Podobna zasada definiowania
Języki i metody programowania Java INF302W Wykład 2 (część 1)
Języki i metody programowania Java INF302W Wykład 2 (część 1) Autor Dr inż. Zofia Kruczkiewicz Autor: Zofia Kruczkiewicz, Języki i metody programowania Java, wykład 2, część 1 1 Struktura wykładu 1. Identyfikacja
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ę,
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
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
Generatory. Michał R. Przybyłek
Generatory Michał R. Przybyłek 1 Wstęp Generator to potencjalnie nieskończony, leniwie obliczany, ciąg wartości. W zależności od tego, która ze stron decyduje o wygenerowaniu nowej wartości wyróżniamy
Operatory. Składnia. Typy proste. Znaki specjalne
Składnia Operatory komentarze // /* */ /** */ litery A.. Z, a.. z, \udddd dddd>00c0 identyfikatory pierwszy znak= _, lub litera, następne dodatkowo 0.. 9 liczby dziesiętne Ddddd (D 0) liczby ósemkowe 0dddd
Klasy abstrakcyjne, interfejsy i polimorfizm
Programowanie obiektowe 12 kwietnia 2011 Organizacyjne Klasówka będzie 20 IV 2011. Sale jeszcze są pertraktowane. Materiał do wyjątków włącznie. Można mieć swoje materiały nieelektroniczne. Wywołanie z
Tworzenie aplikacji w języku Java
Tworzenie aplikacji w języku Java Wykład 1 Piotr Czapiewski Wydział Informatyki ZUT 2 października 2009 Piotr Czapiewski (Wydział Informatyki ZUT) Tworzenie aplikacji w języku Java 2 października 2009
Polimorfizm. dr Jarosław Skaruz
Polimorfizm dr Jarosław Skaruz http://jareks.ii.uph.edu.pl jaroslaw@skaruz.com O czym będzie? finalne składowe klasy abstrakcyjne interfejsy polimorfizm Finalne składowe Domyślnie wszystkie pola i metody
Remote Method Invocation 17 listopada 2010
Podejście obiektowe do budowy systemów rozproszonych interfejs (w języku Java), wywiedziony z Remote obiekt aplikacja klienckak interfejs serwer stub szkielet sieć Mechanizm RMI umożliwia tworzenie obiektów
Zdalne wywołanie metod - koncepcja. Oprogramowanie systemów równoległych i rozproszonych Wykład 7. Rodzaje obiektów. Odniesienie do obiektu
Zdalne wywołanie metod - koncepcja Oprogramowanie systemów równoległych i rozproszonych Wykład 7 RMI (Remote Method Invocation) - obiektowe RPC, dostarcza klientowi interfejs do obiektu, implementacja
Aplikacje w środowisku Java
Aplikacje w środowisku Java Materiały do zajęć laboratoryjnych Klasy i obiekty - dziedziczenie mgr inż. Kamil Zieliński Katolicki Uniwersytet Lubelski Jana Pawła II 2018/2019 W ramach poprzedniego laboratorium
Oprogramowanie systemów równoległych i rozproszonych Wykład 7
Wykład 7 p. 1/2 Oprogramowanie systemów równoległych i rozproszonych Wykład 7 Dr inż. Tomasz Olas olas@icis.pcz.pl Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Zdalne wywołanie