Objektorienterad Programkonstruktion. Föreläsning 11 6 dec 2016

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

Tung bakgrundsaktivitet t.ex. Aktiva objekt t.ex. Animering, simulering. DD2385 Programutvecklingsteknik Några bilder till föreläsning 9 6/5 2013

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

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Klasser som datastrukturer

Tentamen Nätverksprogrammering Lösningsförslag

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

Tentamen Nätverksprogrammering Lösningsförslag

Objektorienterad Programkonstruktion, DD1346 FACIT. Tentamen , kl

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

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Objektorienterad Programkonstruktion. Föreläsning 7 24 nov 2015

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

Föreläsning 3: Abstrakta datastrukturer, kö, stack, lista

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

Tentamen Nätverksprogrammering Lösningsförslag

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

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

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

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

Objektorienterad Programkonstruktion. Föreläsning 6 23 nov 2015

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

Surfning. Webbklienter och webbservrar. Specialskrivna webbservrar. Kommunikation med sockets

Föreläsning 11 Aktiva objekt och trådar, strömmar, kommunikation DAT043,

Classes och Interfaces, Objects och References, Initialization

EDAA20 Programmering och databaser. Mål komprimerat se kursplanen för detaljer. Checklista. Föreläsning 1-2 Innehåll. Programmering.

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

TENTAMEN PROGRAMMERINGSMETODIK MOMENT 2 - JAVA, 4P

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

Tentamen Nätverksprogrammering Lösningsförslag

Objektorienterad Programkonstruktion, DD1346. Tentamen , kl

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

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

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

Tentamen. DD2385 Programutvecklingsteknik vt 2013 Onsdagen den 22 maj 2013 kl Hjälpmedel: penna, suddgummi, linjal

Föreläsning 5-6 Innehåll

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

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

Laborationer, moment 4 5

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

Objektorienterad Programkonstruktion. Föreläsning dec 2015

F5 Meddelandesändning med TCP

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. HT-15 Datum: Tid: kl

Objektorienterad programmering i Java

Kungl. Tekn. Högskolan Förel 1, bild 1 Föreläsning 1: Introduktion ffl Kursinnehåll ffl Javarepetition ffl Referenser ffl Nyckelordet static ffl Klass

Föreläsning 5 Meddelandesändning med TCP

Tentamensskrivning Nätverksprogrammering (EDA095 - FED) , kl 8-13

Högskolan Dalarna sid 1 av 7 DI-institutionen Hans-Edy Mårtensson Sten Sundin

Command line argumenter. Objektorienterad Programmering (TDDC77) Vad blir resultatet? Nu då? Ahmed Rezine. Hösttermin 2016

Lösningar för tenta 2 DAT043,

Objektorienterad Programmering (TDDC77)

F4. programmeringsteknik och Matlab

DI-institutionen Sid 1 av 5 Hans-Edy Mårtensson Sten Sundin Micael Karlsson

Kort repetition. Programmeringsteknik för Bio1 och I1. Vad ska vi lära oss idag? Ett exempel

Mer källkod. Styrstrukturer Val Slingor Operatorer Källkodsexempel med minne. Erik Forslin. Rum 1445, plan 4 på Nada

DAT043 Objektorienterad Programmering

Grundläggande programmering, STS 1, VT Sven Sandberg. Föreläsning 14

TDDC77 Objektorienterad Programmering

OOP Objekt-orienterad programmering

TDDC77 Objektorienterad Programmering

Objektorienterad Programkonstruktion. Föreläsning jan 2016

Lösningsförslag till tentamen

Tentamen ITK:P2. Inga hjälpmedel tillåtna förutom penna och papper. Skriv tydligt och texta gärna. 14 st frågor, 70 poäng.

Undantag. Engelska: exceptions. Skansholm: exceptionella händelser

Parallellism, återblick

TENTAMEN. Objektorienterade applikationer CHALMERS. 2018/2019, lp 3 DAT055. Uno Holmer

Tentamen. Lösningsförslag

Kort om klasser och objekt En introduktion till GUI-programmering i Java

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

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

Föreläsning 8: Exempel och problemlösning

TENTAMEN. Kurs: Objektorienterad programmeringsmetodik 5DV133 Ansvarig lärare: Anders Broberg. VT-13 Datum: Tid: kl

Presentation av trafiksimuleringsprojektet

Introduktion till Datalogi DD1339. Föreläsning 2 22 sept 2014

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

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

Tentamen, EDAA10 Programmering i Java

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

Laborationer, moment 4 5

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

JAVA Mer om klasser och objektorientering

Språkkonventioner och redigering av tal.

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

OOP Tenta

2I1049 Föreläsning 5. Objektorientering. Objektorientering. Klasserna ordnas i en hierarki som motsvarar deras inbördes ordning

Två designmönster, MVC och Observer/Observable. Objektorienterad programvaruutveckling GU (DIT011)

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

Trådar. Aktiva objekt

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

Lösningsförslag till tentamen

Föreläsning 4. Klass. Klassdeklaration. Klasser Och Objekt

Dugga i Grundläggande programmering STS, åk

Algoritmer. Två gränssnitt

Föreläsning 8. Arv. Arv (forts) Arv och abstrakta klasser

TENTAMEN OOP

Föreläsning 3. Stack

Objektorienterad Programkonstruktion. Föreläsning 3 7 nov 2016

Transkript:

Objektorienterad Programkonstruktion Föreläsning 11 6 dec 2016

Föreläsningen 13/12 Halvtidsrepetition Maila frågor som ni vill att jag tar upp! ccs@kth.se

Processer Vad vi i dagligt tal menar när vi pratar om ett program som kör En process har referenser till en mängd reserverat minne En process har referenser till systemresurser, som t.ex filer, sockets, mm Ett operativsystem har (minst) en scheduler som ansvarar för att tilldela olika processer tid i processorn för att exekvera sina instruktioner Processer har olika prioritet, utifrån vilken turordningen i schedulern bestäms Det går att kommunicera mellan processer, men det är ungefär lika bökigt inom en dator som mellan två olika datorer I vanliga fall körs javamotorn som en process, men det går att skapa flera ny processer inifrån ett javaprogram

Trådar En process är i sin tur uppdelad i trådar (minst en) Trådarna kan exekvera parallellt med varandra Varje tråd kan schemaläggas separat av schedulern, utifrån en given prioritetsordning. Vid samma prioritet får trådarna turas om, hur ofta de byts ut varierar med schedulern (och OS:et) Alla trådar kan ha tillgång till allt minne och filpekare som hör till processen. Det delade minnet gör att en context switch ofta går fortare mellan trådar än mellan processer Det delade minnet gör att det är lätt att kommunicera mellan olika trådar i samma process Java skapas trådar med klassen Thread och gränssnittet Runnable

Processer och trådar

Thread I Java skapas trådar ur klassen Thread Trådobjektet innehåller kod som körs parallellt med den tråd som startade den Koden som ska köras i en tråd finns definierad i dess run()- metod Trådklassen definierar bl.a start(), sätter igång tråden sleep(int ms) låter tråden vänta tillfälligt setpriority(int newpriority) sätter prioriteten, har nästan ingen effekt! join(int ms) väntar på att tråden ska bli klar

Runnable Ett alternativ till att ärva från klassen Thread är att skapa en egen klass som implementerar Runnable Då måste ens klass implementera metoden run() Ett trådobjekt kan skapas med en Runnable som argument till konstruktorn, då körs run() från Runnableobjektet när start() anropas på tråden Fördelen med att ärva från Thread är att det ofta blir mindre kod att skriva Fördelen med att implementera en egen Runnable-klass är att man kan ärva från en helt annan klass, om man behöver specialiserad funktionalitet Thread implementerar Runnable

Thread-exempel public class HelloThread extends Thread { public void run() { System.out.println("Hello from a thread!"); public class ThreadDemo{ public static void main(string[] args) { HelloThread hello = new HelloThread(); hello.start(); System.out.println("Hello from main!");

Runnable public class HelloRunnable implements Runnable { public void run() { System.out.println("Hello from a thread!"); public class RunnableDemo{ public static void main(string[] args) { Thread hello = (new Thread(new HelloRunnable())); hello.start(); System.out.println("Hello from main!");

Exempel: en multitrådad server En server kan med fördel skapa en egen tråd för varje extern förfrågan En huvudloop lyssnar efter anslutningar, och startar en ny tråd varje gång det kommer en anslutning utifrån De nya trådarna kan ha en konstruktor som tar en Socket som argument

Multitrådad server i Java try { serversocket = new ServerSocket(1025); catch (IOException e) { System.out.println("listen failed on port: 1025"); while(!done){ Socket sock = null; try { sock = serversocket.accept(); catch (IOException e) { System.out.println("Accept failed: 1025"); Thread thr = new Thread(new Handler(sock)); thr.start(),

Threadpool Concurrency pattern (ej GoF) Skapa ett antal trådar en gång för alla Uppgifter som skall utföras av en tråd läggs i en uppgiftskö (Task Queue) Så fort en tråd blir färdig med sin uppgift tilldelas den nästa uppgift ur kön Begränsar antalet trådar som kan skapas Minskar overhead för att skapa nya trådar Lämplig när det finns en väldigt stor mängd (små) uppgifter som ska utföras Ett fåtal trådar kan göra att de första uppgifter som slutförs blir klara fortare än om man har många trådar

Threadpool i Java Java definierar gränssnittet Executor, som liksom Thread kan ta en Runnable och köra den Det är inte definierat när/hur en Executor kör en Runnable I stället för (new Thread(myRunnable)).start(); kan vi anropa myexecutor.execute(myrunnable); Ett sätt att skapa en ExecutorService som består av en Thread Pool är med fabriksmetoden newfixedthreadpool(int poolsize) som finns i java.util.concurrent.executors

Threadpool i Java public class NetworkService implements Runnable{ private ServerSocket serversocket; private ExecutorService pool; public NetworkService(int port, int poolsize) throws IOException { serversocket = new ServerSocket(port); pool = Executors.newFixedThreadPool(poolSize); public void run() { try { while (true) { pool.execute(new Handler(serverSocket.accept())); catch (IOException ex) { pool.shutdown();

Handler class Handler implements Runnable { private final Socket socket; Handler(Socket socket) { this.socket = socket; public void run() { // read and service request on socket