Parallellism, återblick

Relevanta dokument
Lite om felhantering och Exceptions Mer om variabler och parametrar Fält (eng array) och klassen ArrayList.

Föreläsnings 9 - Exceptions, I/O

Trådar. Aktiva objekt

Kompilering och exekvering. Föreläsning 1 Objektorienterad programmering DD1332. En kompilerbar och körbar java-kod. Kompilering och exekvering

Software Technology. Josef Svenningsson

Föreläsnings 11 - GUI, Händelsestyrda program, MVC

Föreläsning 12. Föreläsning 12. Rörliga figurer Klassen Timer Undantag Något om applets. Rörliga appletsfigurer Klassen Timer Undantag

Programmering med Java. Grunderna. Programspråket Java. Programmering med Java. Källkodsexempel. Java API-exempel In- och utmatning.

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

Objektorienterad Programmering DAT043. Föreläsning 4 23/1-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

LÖSNINGSFÖRSLAG Programmeringsteknik För Ing. - Java, 5p

Input. Programmering. Andra källor

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Kungliga Tekniska Högskolan Ämneskod 2D4134 Nada Tentamensdag maj - 19 Tentamen i Objektorientering och Java Skrivtid 5 h

Klassen javax.swing.timer

Föreläsning 2 Objektorienterad programmering DD1332. Typomvandling

OOP Objekt-orienterad programmering

Föreläsning 2, vecka 8: Repetition

Lösningar för tenta 2 DAT043,

Lösningar för tenta 3 DAT043,

F4. programmeringsteknik och Matlab

Idag. Exempel, version 2. Exempel, version 3. Ett lite större exempel

JAVAUTVECKLING LEKTION 4

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

Objektorienterad programmering. Fält som funktionsresultat. Mer om fält: att uppdatera ett parameterfält. Kontrast: Parametrar av primitiv typ

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Föreläsning 8 - del 2: Objektorienterad programmering - avancerat

Föreläsning 6: Metoder och fält (arrays)

F5 Selektion och iteration. ID1004 Objektorienterad programmering Fredrik Kilander

Föreläsning 2. Täcker material från lektion 1, 2, 3 och 4:

Tentamen ID1004 Objektorienterad programmering May 29, 2012

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Laboration 2 Datastrukturer En liten uppgift Frågor

Objektorienterad programmering i Java Undantag Sven-Olof Nyström Uppsala Universitet Skansholm: Kapitel 11

Concurrency Saker händer samtidigt. Process En instans av ett program

TDDE10 m.fl. Objektorienterad programmering i Java Föreläsning 6 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDDC30 Programmering i Java, Datastrukturer och Algoritmer Lektion 2. Länkade listor Stackar Köer MyList Iteratorer Lab 2 Exceptions Paket

Javas Exceptions. DD2385 Programutvecklingsteknik Fler bilder till föreläsning 7 23/ Kort om Javas Exceptions Trådar i Java

Föreläsning 8 SLUMPTAL, SIMULERING + INTRODUKTION TILL VEKTORER

FÖRSLAG TILL LÖSNINGAR FÖR TENTAMEN I INTERNETPROGRAMMERING MED JAVA, 5p för SY , kl

Objektorienterad Programkonstruktion. Föreläsning 4 8 nov 2016

Dagens text. Programmeringsteknik. Mer om Scanner-klassen. Dialogrutor (klassen JOptionPane) Bubbelsortering. Omslagsklasser.

Grundkurs i programmering, 6 hp (725G61) Dugga 2 tillfälle 2

I STONE. I Variabler, datatyper, typkonvertering. I Logiska och matematiska uttryck. I Metoder-returvärde och parametrar. I Villkorssatser if/else

Outline. Objektorienterad Programmering (TDDC77) En frukt har ett namn. Man kan lägga en frukt i en korg... Hashing. Undantag. Ahmed Rezine.

Objektorienterad Programmering (TDDC77)

Föreläsning 4 Innehåll. Abstrakta datatypen lista. Implementering av listor. Abstrakt datatypen lista. Abstrakt datatyp

DAT043 Objektorienterad Programmering

Lösningsförslag till tentamen för TDA540 Objektorienterad Programmering

Programmeringsteknik och Matlab. Dagens program. Viktiga datum. Repetitionsexempel. Repetition av if/else, for, while och Scanner

Tentamen för kursen Objektorienterad programvaruutveckling GU (DIT010)

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 4 Erik Nilsson, Institutionen för Datavetenskap, LiU

TDA550 Objektorienterad programvaruutveckling IT, forts. kurs Övning vecka 2

Detta dokument är ett exempel, cirka hälften av en tentamen för TDA545 Objektorienterad programvaruutveckling

Det finns en referensbok (Java) hos vakten som du får gå fram och läsa men inte ta tillbaka till bänken.

Föreläsning 8 Programmeringsteknik och Matlab 2D1312/2D1305. Klass Object, instans av klass public/private Klassvariabler och klassmetoder

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Lösningsförslag till tentamen

DI-institutionen Sid 1 av 6 Hans-Edy Mårtensson Sten Sundin

Laboration 13, Arrayer och objekt

Språkkonventioner och redigering av tal.

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Programmering för språkteknologer II, HT2011. Rum

Klassdeklaration. Metoddeklaration. Parameteröverföring

DUGGA: Objektorienterade applikationer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Tentamen OOP

JAVAUTVECKLING LEKTION 11

DAT043 Objektorienterad programmering för D, DIT011 Objektorienterad programvaruutveckling för GU

Tentamen Programmering fortsättningskurs DIT950

Dagens föreläsning. Sett i datorsalarna. Mer om arrayer. Matriser. Formatering av utskrifter. Inläsning med hjälp av Scanner-klassen

Hur ser ett Java-program ut?

for-satsen Fält for-satsen Föreläsning 8 (OH-bilder 7) for-satsen for-sats är en styrsats för iterationer. for-sats har följande generella utseende:

Kapitel 6. Hakparenteser fšr att ange index MŒnga všrden av samma typ

Variabler som hör till enskilda objekt. Deklareras på översta nivån i klassen och i regel som private.

Ett problem. Kontrollstrukturer och arrayer. Arrayer. Lösningen. Arrayer och hakparanteser. Exempel int[] results; results = new int[10]; // 0..

OOP Objekt-orienterad programmering

1 Uppgift 1. a) Skapar ett Company-objekt med hjälp av den överlagrade konstruktorn. Du kan själv välja värden på instansvariablerna.

Tentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Objektorienterad Programmering DAT043

Omtentamen för TDA540 Objektorienterad Programmering. Institutionen för Datavetenskap CTH HT-17, TDA540. Dag: , Tid:

Föreläsning 3: Händelsestyrda program och användargränssnitt

Att skriva till och läsa från terminalfönstret

Generisk klass med typparameter Inre klass - ListIterator

EDAA20 Föreläsning Klassen ArrayList. Viktiga operationer på ArrayList. Generisk klass

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Muddy. Funktioner / metoder. Punktnotation. Evalueringsordning

2D1311 Programmeringsteknik för Bio1 och Bio2, vt 2003 Fiktivt prov På flervalsfrågorna är endast ett svar rätt om inget annat anges i frågan! Det rik

Subklasser och arv Inledning till grafik (JFrame och JPanel). Något om interface. Objektorienterad programvaruutveckling GU (DIT011) Subklasser

Föreläsning 3. Stack

Objektorienterad programmering E. Telefonboken, än en gång. Gränssnitt. Telefonboken med gränssnitt specificerat, del 1.

Testning av program. Verklig modell för programutveckling

OOP Objekt-orienterad programmering

Lösningsförslag till tentamen

Kopiering av objekt i Java

Examination i. PROGRAMMERINGSTEKNIK F1/TM1 TIN212 (Dugga) Dag: Onsdag Datum: Tid: (OBS 3 tim) Rum: V

Objektorienterad Programmering DAT043. Föreläsning 9 12/2-18 Moa Johansson (delvis baserat på Fredrik Lindblads material)

Parsing med Recursive Descent, Avbildningsklasser. Syntaxdiagram. Syntaxdiagram och kodning expression. Betrakta följande uttryck

Arv: Fordonsexempel. Arv. Arv: fordonsexempel (forts) Arv: Ett exempel. En klassdefinition class A extends B {... }

Tentamen , Grundläggande programmering i Java

Exempel. Arrayer. Lösningen. Ett problem. Arrayer och hakparanteser. Arrayer

732G Linköpings universitet 732G11. Johan Jernlås. Översikt. Repetition. Exempelduggan. Luffarschack. Koda spel

Föreläsning 4 Innehåll

Transkript:

Parallellism, återblick Josef Svenningsson December 11, 2012

Lab7 Det är problem med lab7. Gå med i den grupp som ni använt tidigare. DEMO

Flera saker händer samtidigt Ofta hanterar program olika indata från omvärden. Men dessa indata kan komma väldigt nära i tiden eller till och mer hända samtidigt. Exempel: bilar, webservrar Hur kan man skriva ett program som hanterar flera saker samtidigt?

Parallellism Vi har hittills programmerat sekvensiellt, bara en sak händer åt gången i ett program. Både datorer och mobiltelefoner har idag flera processorer. Hur skriver man sitt program så att det kan utnyttja beräkningskraften hos flera beräkningsenheter?

Trådar I Java använder man trådar för att modellera parallellism. Trådar modelleras med klassen Thread. När man startar en tråd kommer den att köras för sig själv. Några konstruktorer och metoder från klassen: Thread(Runnable r); void start(); void join(); Metoder join väntar till tråden har exekverat färdigt.

Runnable interface Interfacet Runnable används för ett objekt som public interface Runnable { public void run(); Metod run är den som kommer att köras i en separat tråd.

Timer Klassen Timer använder sig av trådar för att ligga och vänta och sedan skapa händelser parallellt med att det övriga programmet körs.

Vad skriver programet ut? public class Race implements Runnable { private int counter = 0; public void run() { for(int i = 0; i < 1000000; i++) { counter++; public static void main(string[] args) throws InterruptedException { Race r = new Race(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println("Counter = " + r.counter);

Delade resurser När trådar har delade resurser måste man vara nogrann så att de inte ändrar på resurserna samtidigt. Annars kan konstiga saker hända. När en tråd modifierar en delad resurs kallas det för en kritisk sektion (eng. critical section). Ett sätt att lösa problemet med kritiska sektioner är att se till att man får ömsesidig uteslutning (eng. mutual exclusion).

Lås För att uppnå ömsesidig uteslutning kan man använda lås. I paketet java.util.concurrent.locks finns det interface och klasser för att uppnå ömsesidig uteslutning. public interface Lock { public void lock(); public void unlock();... Alla trådar som använder en delad resurs behöver också ha tillgång till ett lås för denna resurs. Innan de vill komma åt resursen behöver de anropa lock Efteråt behöver de anropa unlock

Nu skriver programmet ut rätt sak import java.util.concurrent.locks.*; public class RaceFixed implements Runnable { private int counter = 0; private Lock lock = new ReentrantLock(); public void run() { for(int i = 0; i < 1000000; i++) { lock.lock(); counter++; lock.unlock(); public static void main(string[] args) throws InterruptedException { RaceFixed r = new RaceFixed(); Thread t1 = new Thread(r); Thread t2 = new Thread(r); t1.start(); t2.start(); t1.join(); t2.join(); System.out.println("Counter = " + r.counter);

Svårigheter med att skriva parallella program Det finns många svårigheter med att skriva parallella program. Race condition, Deadlock, två eller fler trådar blockerar varandra så att inget händer. Starvation, en tråd får aldrig åtkomst till den gemensamma resursen och kan inte uträtta sitt arbete. Om man har realtidskrav och prioriteter bland trådar finns det ännu fler problem som kan uppstå. Unvik att skriva parallella program i möjligaste mån. Om ni måste, använd biblioteksfunktioner i så stor utsträckning som möjligt!

Sammanfattning Sammanfattning av kursinnehållet

Primitiva datatyper double, int etc. Man kan utföra aritmetik på värden av dessa typer. Omslagsklasser, Double, Integer etc. Innehåller hjälpfunktioner för max- och minvärden och parsning.

Scanner Klassen Scanner kan användas för att tolka en sträng eller en fil. int nextint(); double nextdouble(); boolean nextboolean(); String next(); boolean hasnextint(); boolean hasnextdouble(); boolean hasnextboolean(); boolean hasnext();

if-satsen Används om man vill göra olika saker beroende på något villkor if (villkor1) {...... if (villkor2) {... else {..

while-satsen Används för att göra saker upprepade gånger. Bra när man inte vet i förväg hur många gånger man vill upprepa while (sc.hasnext()) { System.out.println(sc.next());

for-satsen Används också för att göra saker upprepade gånger Bör användas när man i förväg vet hur många iterationer man vill köra den. int[] nr = {0,1,2,3,4,5 for(int i=0;i<6;i++) { System.out.println("Tal : " + nr[i])

do-while-satsen Som while-satsen men man vill iterera minst en gång do {... while (villkor)

Klasser metoder och parameteröverföring primitiva typer kopieras objekt överförs via referens objekt är instanser av klasser instansvariabler, instansmetoder klassvariabler, klassmetoder null this Scanner sc1; Scanner sc2 = new Scanner("Hej");

Interface Ett sätt att garantera att en klass har vissa metoder Subtypning - metoder som har parametrar där typen är ett interface kan acceptera alla klasser som implementerar detta interface. interface ActionListener { public void actionperformed(actionevent e)

Endimensionella Fält En ordnad samling. int[] digits = {1,2,3,4,5,6; Point[] points = new Point[100]; Ofta används for-loopar för att hantera fält int sum = 0; for(int d : digits) { sum += d;

Flerdimensionella fält int[][][] picture = new int[320][480][3] Resulterar i nästlade for-loopar for(int i=0;i < picture.length;i++) { for(int j=0;j < picture[i].length;j++) { int temp = picture[i][j][0]; picture[i][j][0] = picture[i][j][2]; picture[i][j][2] = temp;

Enumereringstyper Skapar en uppräkning av saker public enum suit { HEARTS, SPADES, DIAMONDS, CLUBS;

switch-satsen Användbar för att välja mellan fler alternativ Fungerar speciellt bra med enumereringstyper Glöm inte break! switch(card) { case HEARTS: System.out.println("Hearts"); case SPADES: break; System.out.println("Spades"); break; case DIAMONDS: System.out.println("Diamonds"); break; case CLUBS: System.out.println("Clubs"); break; default-fallet används för att täcka alla fall man inte räknat upp.

Exceptions - undantag throw kastar ett exception try - catch fångar ett exception throw new IllegalArgumentException(); try {... catch (IllegalArgumentException e) {... Checked exceptions behöver deklareras om de inte fångas Unchecked exceptions behöver inte deklareras public void readfile(string file) throws FileNotFoundException;

Argument till ett program Sträng-fältet i main kan användas för att ge parametrar till ett program public static void main(string[] args) {...

GUI Model-View-Controller Grafiska komponenter Layout - för att lägga ut grafiska komponenter på skärmen Lyssnare - för att hantera händelser

Lokala klasser Klasser kan deklareras inuti klasser Anonyma lokala klasser kan deklareras Användbart när man programmerar med lyssnare button.addactionlistener(new ActionListener() { public void actionperformed(actionevent e) { System.out.println("I was clicked."); );

Graphics-klasser, rita egna bilder För att kontrollera hur en komponent ska ritas ut överskugga man paintcomponent. Klassen Graphics har många metoder för att rita bilder.

Timer Skapar händelser med jämna mellanrum Användbart för att skapa animationer

Colletions Standardklasser för att hantera samlingar av objekt. Interface: Set,List, Map etc. Klasser ArrayList, HashMap etc.

Rekursion Metoder som anropar sig själva Användbart t.ex. för att implementera rekursiva matematiska formler public static int fac(int n) { if (n==0) return 1; else return n * fac(n-1);

Tips för tentaplugg Det hjälper inte att bara sitta och läsa i boken. Programmera! Gör om övningarna och gör övningarna i boken.