PowerPoint Presentation

Слични документи
Tutoring System for Distance Learning of Java Programming Language

Microsoft PowerPoint - OOPpredavanja05 [Compatibility Mode]

Sveucilište u Zagrebu

Slide 1

1. Modifajeri (Modifikatori)

VEŽBA 5: KLASE I OBJEKTI U C# Cilj ove vežbe je upoznavanje sa osnovama rada sa klasama i objektima u programskom jeziku C#. Pored toga, bide demonstr

Класе комбинација презентације (Хортона) и к о бајаги скрипте (Ово је прича коју врло радо причам) нови тип података: дефинишу могуће вредности подата

Razvoj programa, Code::Blocks, struktura programa, printf, scanf, konverzioni karakteri predavač: Nadežda Jakšić

Microsoft Word - 11 Pokazivaci

Računarski praktikum I - Vježbe 03 - Implementacija strukture string

PowerPoint Presentation

Microsoft PowerPoint - 13-Funkcije_2.ppt [Compatibility Mode]

Uvod u računarstvo 2+2

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvornog_Programa_I_Greske [Compatibility Mode]

Uvod u računarstvo 2+2

Tutoring System for Distance Learning of Java Programming Language

Računarski praktikum I - Vježbe 09 - this, static

Inženjering informacionih sistema

Tutoring System for Distance Learning of Java Programming Language

PowerPoint Presentation

Slide 1

ELEKTROTEHNIČKI FAKULTET, UNIVERZITET U BEOGRADU KATEDRA ZA ELEKTRONIKU UVOD U ELEKTRONIKU - 13E041UE LABORATORIJSKA VEŽBA Primena mikrokontrolera

Programski jezik C

Microsoft PowerPoint - JavaP9_2019

Funkcije predavač: Nadežda Jakšić

PROMENLJIVE, TIPOVI PROMENLJIVIH

Tutoring System for Distance Learning of Java Programming Language

Uvod u računarstvo 2+2

P11.3 Analiza zivotnog veka, Graf smetnji

Microsoft PowerPoint - 10-Jednodimenzionalni nizovi.ppt [Compatibility Mode]

Apache Maven Bojan Tomić

Microsoft PowerPoint - 12-Funkcije_1.ppt [Compatibility Mode]

Zadatak 011 Razmotrite sljedeći primjer. package hr.fer.oopj.primjeri.p011; public class Main { } public static void main(string[] args) { obrada(2.71

Funkcije predavač: Nadežda Jakšić

PowerPoint Presentation

Microsoft Word - MySQL_3.doc

Microsoft PowerPoint - VIII vezbe -karta medjuzavisnih zahvata

Primenjeno programiranje - vezbe GUI i baze podataka

Microsoft PowerPoint - Programski_Jezik_C_Organizacija_Izvrsnog_Programa [Compatibility Mode]

Microsoft PowerPoint - Datoteke [Compatibility Mode]

Konverzije, operatori, matematičke funkcije predavač: Nadežda Jakšić

Primenjeno programiranje - Vežbe

Programiranje za UNIX Okruženje unix procesa

UVOD - OD JAVE DO C# ELEMENTARNE RAZLIKE Veliki broj Java/C# razlika su uglavnom preimenovane ključne reči i razlike u konvencijama imenovanja. Neke o

Web orijentirana rješenja u turizmu

P9.1 Dodela resursa, Bojenje grafa

R u z v e l t o v a 5 5, B e o g r a d, t e l : , e - m a i l : p r o d a j p s i t. r s, w w w. p s i t. r s

3.Kontrlne (upravlja~ke) strukture u Javi

PowerPoint Presentation

Microsoft PowerPoint - 6. CMS [Compatibility Mode]

Univerzitet u Novom Sadu Tehnički fakultet Mihajlo Pupin Zrenjanin Seminarski rad Predmet: Konkuretno programiranje doc. dr Dejan Lacmanovic Zorica Br

Microsoft PowerPoint - MR - Vjezbe - 03.ppt [Compatibility Mode]

Računarski praktikum I - Vježbe 07 - Podstrukture, const, reference

Računarski praktikum I - Vježbe 01 - Uvod

PowerPoint Presentation

PowerPoint Presentation

Увод у организацију и архитектуру рачунара 1

Programiranje 2 0. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 0. predavanje p. 1/4

PowerPoint Presentation

Programiranje 2 popravni kolokvij, 15. lipnja Ime i prezime: JMBAG: Upute: Na kolokviju je dozvoljeno koristiti samo pribor za pisanje i brisanj

ZADACI ZA VEŽBU 1. Realizovati konzolnu aplikaciju koja će računati površinu kvadrata, pravougaonika ili trougla. 2. Preko konzole se unosi ocena od 1

070-ALIP2-udzbenik.indb

POSLOVNI INFORMACIONI SISTEMI I RA^UNARSKE

Microsoft PowerPoint - 07-DinamickeStrukturePodataka

Microsoft PowerPoint - Pred12-13-DistribuiraneBP [Compatibility Mode]

(Microsoft PowerPoint - 903_\216nidari\346_Java Persistence.pptx)

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU BEOGRAD, Ispit iz Programiranja 2 Ispit traje 135 minuta Napomene: a) Pažljivo proučite U

1. Vremensko ograničenje Memorijsko ograničenje ulaz izlaz 0,1 s 64 MB standardni ulaz standardni izlaz Banka želi da upozori kupce na sumnjive aktivn

Programiranje 1 IEEE prikaz brojeva sažetak Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog1 2018, IEEE p

Slide 1

Projekti šabloni

Slide 1

Microsoft PowerPoint - Bitovi [Compatibility Mode]

Zbirka resenih zadataka iz arhitekture racunara

Uvod u takmičarsko programiranje

INDIKATOR SVJETLA FUNKCIJE TIPKI 1. Prikazuje se temperatura i parametri upravljanja 2. Crveno svjetlo svijetli kad grijalica grije 3. Indikator zelen

** Osnovni meni

Programiranje 2 7. predavanje Saša Singer web.math.pmf.unizg.hr/~singer PMF Matematički odsjek, Zagreb Prog2 2019, 7. predavanje p. 1/7

Datoteke predavač: Nadežda Jakšić

Classroom Expectations

Strukture predavač: Nadežda Jakšić

Drugi kolokvij iz predmeta Operacijski sustavi 2. srpnja Napomene: PISATI ČITKO! Zadatke 7-10 rješavati na ovom papiru ili uz njih napisati "na

Programiranje II Beleške sa vežbi Smer Informatika Matematički fakultet, Beograd Sana Stojanović 1

Microsoft Word - CAD sistemi

Prenesi Mesečna pretplata u dinarima sa PDV-om Nacionalni minuti uključeni u pretplatu Dodatni minuti u Telenor m

Uvod u računarstvo 2+2

Datum: 20

Programiranje 1 Beleške sa vežbi Školska 2007/2008 godina Matematički fakultet, Beograd Jelena Tomašević December 5, 2007

JEZGRO OPERATIVNOG SISTEMA I UPRAVLJANJE PROCESIMA 1. Šta je jezgro, a šta proces? Jezgro (nukleus ili kernel) je osnovni deo svakog operativnog siste

Postavka 12: Uzročnost 1 DISTRIBUIRANI ALGORITMI I SISTEMI Iz kursa CSCE 668 Proleće 2014 Autor izvorne prezentacije: Prof. Jennifer Welch

1 jmbag ime i prezime Programiranje 2 prvi kolokvij, Rezultati i uvidi u kolokvije: Rezultati u petak, 3.5., navečer na webu, a uvidi u p

OOP1 - domaci 2 (2004/05)

07_PJISP_II_Predavanja

Programski jezik JAVA PREDAVANJE

Microsoft Word - WP_kolokvij_2_rjesenja.doc

ЛИНЕАРНА ФУНКЦИЈА ЛИНЕАРНА ФУНКЦИЈА у = kх + n А утврди 1. Које од наведених функција су линеарне: а) у = 2х; б) у = 4х; в) у = 2х 7; г) у = 2 5 x; д)

Elektrotehnički fakultet Univerziteta u Beogradu Relejna zaštita laboratorijske vežbe Vežba 3: ISPITIVANJE ELEKTRONSKOG FREKVENCIJSKOG RELEJA RFN-30 U

Препоруке безбедности мрежних сервиса Copyright 2015 АМРЕС

P3.2 Paralelno programiranje 2

Транскрипт:

Java konkurentno programiranje Životni ciklus niti i problemi sinhronizacije resursa

Multitasking

Multithreading

Životni ciklus niti http://www.roseindia.net/java/thread/lifecycle-of-threads.shtml

Životni ciklus niti - detaljnije

Java podrška za konkurentnost Nit (thread) klasa predstavlja stanje jedne nezavisne aktivnosti i ima sledeće osobine: Metode start, sleep... Veoma slabu garanciju kontrole i redosleda aktivnosti Svaki Thread je član tzv. ThreadGroup-e koja se koristi za kontrolu pristupa i čuvanje podataka Kod koji se izvršava u Thread-u je definisan metodom run() Synchronized metodi i blokovi koda kontrolišu atomičnost korišćenjem katanaca (locks) Java postavlja automatske katance na tipove: byte, char, short, int, float i Object reference, ali ne i na double i long tip volatile ključna reč kontroliše atomičnost jedne promenljive Monitor metodi u klasi Object: wait(), notify(), notifyall()

Klasa Thread Konstruktor Thread(Runnable r) Pokretanjem niti počinje da se izvršava sadržaj metoda run() Ostali nasleđeni metodi start() - aktivira run() isalive() zaustavljena - vraća true ako je nit aktivirana ali ne i join() - čeka na završetak interrupt() - izlazi iz wait, sleep ili join metoda isinterrupted() - vraća informaciju da li je nit prekinuta getpriority() - vraća prioritet niti setpriority(int) - podešava prioritet niti

Preostali statički metodi currentthread() - vraća referencu na nit koja je lokalna sa pozicije poziva sleep(ms) - susenduje nit na najmanje ms milisekundi (takođe se odnosi na aktuelnu nit) interrupted() prekinutosti - vraća i čisti status o

Dizajn konkurentnih objekata Obrasci za reprezentaciju i menadžment sigurnih stanja objekata: Nepromenjivost (eng. Immutability) Ne dopuštati promene Zaključavanje (eng. Locking) Garantovanje ekskluzivnog pristupa Zavisnost stanja Šta raditi kad ne može da se uradi ništa Ostalo...

Nepromenjivost Nepromenjivi objekti nikad ne menjaju stanje Aktivnosti nad nepromenjivim objektima su uvek sigurne i efikasne class ImmutableAdder { private final int offset_; // blank final ImmutableAdder(int x) { offset_ = x; } int add(int i) { return i + offset_; } } Primeri nepromenjivih tipova u javi: String, Integer, Color

Primene nepromenjivosti Nepromenjive reference ka promenjivim objektima class Relay { private final Server delegate; Relay(Server s) { delegate = s; } void serve() { delegate.serve(); } } Parcijalna nepromenjivost class FixedList { // cells with fixed successors private final FixedList next; // immutable FixedList(FixedList nxt) { next = nxt; } FixedList successor() { return next; } private Object elem = null; // mutable } synchronized Object get() { return elem; } synchronized void set(object x) { elem = x; }

Zaključavanje (eng. Locking)

Zaključavanje Sprečava konflikte sa memorijskim lokacijama, tzv. Problem sihronizacije resursa Može se koristiti za garantovanje atomičnosti (princip sve ili ništa) metoda Može da izazove deadlock (mrtvo zaključavanje)

Primer class Location { private double x_, y_; Location(double x, double y) { x_ = x; y_ = y; } synchronized double x() { return x_; } double y() { synchronized (this) { return y_; } } synchronized void moveby(double dx, double dy) { x_ += dx; y_ += dy; } }

Java katanci Svaki Java Object poseduje jedan katanac (tzv. Implicitni katanac) Njime se manipuliše preko synchronized ključne reči Class objekti sadrže katanac za zaštitu statičkih promenljivih i metoda Skalari kao što su int, short nisu objekti, tako da njih ne možemo zaključavati Java katanci su više puta iskoristivi (reentrant)

Katanci i keširanje Zaključavanje generiše poruke između niti i memorije Uzimanje katanca inicira čitanje iz memorije u keš memoriju niti Otpuštanje katanca inicira pisanje keširanog sadržaja nazad u memoriju

Primer sa bankom U priloženom materijalu...

Zadatak Postoji veliko skladište slatkiša koje ima 100 hiljada slatkiša (npr. čokoladnih bananica) inicijalno. Pored velikog postoje 4 prodavnice slatkiša u koje može da se smesti najviše 1000 slatkiša. Inicijalno su prazne. Postoje 100 ljudi i svaki od njih na svakih pola sekunde oseti potrebu za čokoladnom bananicom i odlazi do neke od nasumično odabranih prodavnica.

Zadatak (nastavak) Potom u prodavnici, ako je dostupno, uzme nasumično od 1 do 7 slatkiša. Brzo nakon toga ih pojedu, ali uvek zapamte koliko su dosad uzeli komada. Prodavnice se snabdevaju periodično iz skladišta svakih 5 sekundi. One uvek uzmu toliko slatkiša da se dopune do maksimalnog kapaciteta.

Zadatak (nastavak) Modelovati sistem i pobrinuti se da u svakom momentu ukupna količina slatkiša u skladištu, prodavnicama i broj pojedenih komada bude 100 hiljada. Ispisavati promene stanja svake sekunde, koristiti odvojenu nit za ovo. Varirati uslove sistema: smanjenje i povećavanje broja ljudi, vremena njihovog dolaženja u prodavnicu i slično.