Programmeren in Java 3



Vergelijkbare documenten
Tentamen Object Georiënteerd Programmeren TI oktober 2014, Afdeling SCT, Faculteit EWI, TU Delft

Tentamen Object Georiënteerd Programmeren TI januari 2013, Afdeling SCT, Faculteit EWI, TU Delft

Programmeren in Java 3

Concurrency in Java met threads. Java Threads. Voorbeelden concurrency in applicaties. Waarom concurrency in Java?

Tentamen Imperatief Programmeren

IMP Uitwerking week 13

Kleine cursus PHP5. Auteur: Raymond Moesker

Programmeren in Java les 3

Tentamen Objectgeorienteerd Programmeren IN1205 Voorbeeld

Zelftest Programmeren in Java

Modelleren en Programmeren

Game of Life in Java

INFITT01 Internettechnologie WEEK 2

Robocode. Inleiding tot programmeren

X. Grafische elementen

Omschrijf bij ieder onderdeel van de methode de betekenis ervan. Java kent twee groepen van klassen die een GUI kunnen maken: awt en swing.


Deel 1 : Gesloten Boek

Een fragment wordt afgeleid van de basis klasse "Fragment".

Abstracte klassen & Interfaces

Lessen Java: Reeks 3. David Blinder Jan G. Cornelis

Modelleren en Programmeren

Modelleren en Programmeren

Datatypes Een datatype is de sort van van een waarde van een variabele, veel gebruikte datatypes zijn: String, int, Bool, char en double.

Uitwerking Tweede deeltentamen Imperatief programmeren - versie 1 Vrijdag 21 oktober 2016, uur

Programmeren in Java 3

Informatie over. 5VWO DT51: JavaLogo. Casper Bezemer. Toetsweek 1 13 oktober 2016

Tentamen Objectgeorienteerd Programmeren

NAAM: Programmeren 1 Examen 21/01/2011

Uitwerkingen Tweede deeltentamen Imperatief programmeren Vrijdag 15 oktober 2010, uur

NAAM: Programmeren 1 Examen 29/08/2012

Uitwerkingen derde deeltentamen Gameprogrammeren Vrijdag 6 november 2015, uur

Kwis (3) class X { public void a() { System.out.println("x"); public static void main(string[] args) { X x = new X();

Tentamen Imperatief en Object-georiënteerd programmeren in Java voor CKI

sheets Programmeren 2 Java Recursie, de muis en graphics Walter Kosters

Vraag 1: Software Levenscyclus

NSPYRE LEGO MINDSTORMS UITDAGING (JAVA) INLEIDING. DOEL: SIMULATOR:

APPLICATIEBOUW 3E COLLEGE: OBJECT GEORIËNTEERD PROGRAMMEREN, METHODEN, PARAMETERS, SCOPE VAN VARIABELEN. Onderdeel van SmartProducts

Modelleren en Programmeren

Universiteit van Amsterdam FNWI. Voorbeeld van tussentoets Inleiding programmeren

Beginselen van programmeren Practicum 1 (Doolhof) : Oplossing

Objectgeorïenteerd werken is gebaseerd op de objecten die door het systeem gemanipuleerd worden.

Informatica. Objectgeörienteerd leren programmeren. Van de theorie met BlueJ tot een spelletje met Greenfoot... Bert Van den Abbeele

Javascript oefenblad 1

Design patterns Startbijeenkomst

Modelleren en Programmeren

eerste voorbeelden in Java

Een eerste applicatie

Scratch voor mobiel: AppInventor

1 Ontwerppatronen. 1.1 Het Command patroon

Tim Mallezie Architectuur van besturingssystemen: Vraag A2.

Overerving & Polymorfisme

Wat is een grafische gebruikersinterface (GUI)?

Een stoomcursus door Edgar de Graaf, november 2006

BEGINNER JAVA Inhoudsopgave

Zo vind u hierin de volgende documentatie over de klasse Applet: +----java.awt.panel java.applet.applet

Voorbeeld: Simulatie van bewegende deeltjes

Programmeren I. 26 augustus Algemene Richtlijnen. Richtlijnen Programmeren 1

RCL Arduino Workshop 1

Voor het bepalen van de getalswaarde van een string is een standaardmethode beschikbaar: n = Integer.parseInt(s);

Ingebouwde klassen & methodes

Tentamen Objectgeorienteerd Programmeren TI februari Afdeling ST Faculteit EWI TU Delft

Programmeren in C# Interfaces. Hoofdstuk 23

Opdracht 7a. Applicatiebouw 2014/2015

voegtoe: eerst methode bevat gebruiken, alleen toevoegen als bevat() false is

Hoofdstuk 1: Inleiding. Hoofdstuk 2: Klassen en objecten Datahiding: afschermen van implementatiedetails. Naar de buitenwereld toe enkel interfaces.

Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

Knowledgeable Referenceable Personable Accountable Scalable

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Stap 1 Eenvoudig tekenprogramma maken In eerste instantie alleen 'freehand' curves Demo in de les

Uitwerking Tentamen Modelleren en Programmeren - versie 1 Woensdag 1 februari 2017, uur

Versie 2: B C D D A C D A C C. Versie 3: C D A A B D A B D D. Versie 4: A D C C B D C B D D. Versie 5: B A D D C A D C A A

Vereiste kennis. 1 Java-editor. 2 Het compileren van een programma

Inleiding C++ Coding Conventions

compileren & interpreteren - compileren: vertalen (omzetten) - interpreteren: vertolken

Oracle WebForms en Java UI Components

Opdracht 4: Overzichtelijker en generieker

Gedistribueerd Programmeren - Samenvatting

Uitwerking Eerste deeltentamen Mobiel programmeren - versie 1 Vrijdag 23 december 2016, uur

Object Oriented Programming


Opdrachten herhalen. public void tekenscherm (object o, PEA pea) { int x; x = 1; zolang de voorwaarde geldig is

Klassen & objecten, overerving, abstracte klassen, debuggen, interfaces, formulieren, polymorfie, statische methoden, event-handlers

Uitwerking Derde deeltentamen Imperatief programmeren - versie 1 Vrijdag 10 november 2017, uur

Genetische algoritmen in Java met JGAP

Transcriptie:

7 maart 2010

Deze les Zelf componenten maken Concurrency (multithreading): werken met threads levenscyclus van een thread starten tijdelijk onderbreken wachten stoppen

Zelf componenten maken Je eigen component: moet te behandelen zijn zoals andere componenten uit de Java A.P.I. derhalve afleiden van de JComponent klasse? betere optie: afleiden van java.awt.canvas

java.awt.canvas Uit de A.P.I: A Canvas component represents a blank rectangular area of the screen onto which the application can draw or from which the application can trap input events from the user. An application must subclass the Canvas class in order to get useful functionality such as creating a custom component. The paint method must be overridden in order to perform custom graphics on the canvas.

java.awt.canvas gebruiken Recept: Eigen klasse maken Afleiden van Canvas Paint methode herdefiniëren methodes uit de Graphics klasse gebruiken methodes uit de Color klasse gebruiken Gebruiken zoals andere componenten

Voorbeeld public class MijnComponent extends Canvas public void Paint(Graphics g) g.setcolor(new Color(255,0,0)); g.drawrectangle(1,1,10,10);

Threads Tot nu toe: Programma s bestonden uit een opeenvolging van statements: berekeningen uitvoeren objecten aanmaken/vernietigen enz. Nog steeds bestaat een programma uit een opeenvolging (draad) van instructies...

Grafisch Statement 1 Statement 2 Statement 3 Statement 4

Multithreading Programma s kunnen meerdere draden van executie hebben: iedere thread loopt op zichzelf het gedrag van threads is onvoorspelbaar processor verdeelt de rekenkracht over de verschillende rekenkracht echt parallelisme in een singlecore? multicores?

De thread Een thread: is een object: instantie van java.lang.thread of is afgeleid van Thread of implementeert de interface java.lang.runnable heeft een public void run() methode Bij het implementeren van de Runnable interface is het implementeren van de run() methode uiteraard verplicht.

Voorbeeld public class EenThread extends Thread public void run()... statements die in de thread moeten worden uitgevoerd...

Voorbeeld public class EenThread implements Runnable public void run()... statements die in de thread moeten worden uitgevoerd...

Toestanden Een thread kan zich in verschillende toestanden bevinden: thread is aangemaakt, maar nog niet gestart (levenloos?) thread is gestart: (in leven?) thread draait thread is tijdelijk onderbroken thread wacht: op het aflopen van een andere thread op een signaal om verder te gaan afgelopen, definitief beëindigd (dood?)

Model levenloos in leven dood

Een thread starten Een thread wordt gestart met de start() methode: Een thread kan slechts één keer worden gestart. Pogingen een thread nogmaals te starten middels een aanroep van start() worden door de compiler geweigerd. Het opnieuw starten van een thread kun je alleen voor elkaar krijgen door een nieuw threadobject aan te maken...

Voorbeeld... EenThread x = new EenThread(); x.start();... EenThread y = new EenThread(); y.start();... andere statements... x.start(); //threadobject aangemaakt //thread gestart //thread 2 aangemaakt //thread 2 gestart //fout

Een levende thread Aanroepen van de start() methode leidt tot het éénmalig uitvoeren van de run() methode. Zolang run() wordt uitgevoerd, leeft de thread. Vaak wordt in de run() methode een loop geplaatst.

Voorbeeld public class EenThread extends Thread public void run() for(int i=0;i<20;i++) voer_van_alles_uit();

Model levenloos in leven dood start(); run() einde run()

Een thread definitief beëindigen Een thread is definitief beëindigd wanneer de run() methode eindigt. Nogmaals: Na het eindigen van de run() methode is het opnieuw starten van de thread niet meer mogelijk. Elk middel dat (een oneindige loop in) de run() methode stopt, kan worden ingezet voor het eindigen van de thread.

Voorbeeld public class EenThread extends Thread public void run() while(true) voer_van_alles_uit(); if(conditie) break;

Voorbeeld public class EenThread extends Thread public void run() while(true) voer_van_alles_uit(); if(conditie) return;

Veel voorkomend voorbeeld public class EenThread extends Thread private boolean isrunning; public EenThread()isrunning=true); public void run() while(isrunning) voer_van_alles_uit(); if(conditie) isrunning=false;

Threads onderbreken Het kan gebeuren dat een thread onderbroken moet worden. Onderbreken betekent: stop waar je mee bezig bent en doe nu (even?) iets anders. Onderbroken of niet: de thread blijft in leven. Gevaarlijk: Moet een thread meteen ophouden, ook als deze een variabele leest of schrijft? Threads worden op een beschaafde manier onderbroken middels het gebruik van een exception: de InterruptedException

Voorbeeld public void run() while(isrunning) try voer_van_alles_uit(); catch (InterruptedException e) doe_iets_anders();

Een thread onderbreken Een thread kan zichzelf onderbreken door: een InterruptedException op te werpen de interrupt() methode aan te roepen Een andere thread kan eveneens een thread onderbreken middels het aanroepen van interrupt()

Model levenloos in leven dood start(); run() interrupt einde run() catch

Een thread tijdelijk uitschakelen (slapen) Tijdelijk uitschakelen van een thread bereikt men met de sleep(long millis) methode. Aanroepen van sleep zorgt ervoor dat de thread even gaat slapen. Het aantal milliseconden dat wordt opgegeven is niet gegarandeerd dat aantal milliseconden. Voor de precisie ben je afhankelijk van het o.s.

Een thread tijdelijk uitschakelen (slapen) Een thread: is bezig met zijn standaard taken slaapt Hoe onderbreek je het slapen van een thread als dat slapen lang duurt of er iets belangrijks aan de hand is?

Een thread tijdelijk uitschakelen (slapen) Hoe onderbreek je het slapen van een thread als dat slapen lang duurt of er iets belangrijks aan de hand is? Ook de sleep methode kan een InterruptedException opwerpen. sleep moet derhalve in een try catch constructie worden gehangen. Een andere thread kan de methode interrupt() gebruiken om het slapen te onderbreken.

Een thread beëindigen n.a.v. een InterruptedException Vraag: hoe beëindig je een thread naar aanleiding van een InterruptedException?

Een thread beëindigen n.a.v. een InterruptedException Simpel: catch (InterruptedException e) return; of: catch (InterruptedException e) break;

Model levenloos in leven dood start(); run() interrupt sleep einde run() catch

Threads op elkaar laten wachten Een thread kan de opdracht krijgen zichzelf te onderbreken, totdat een andere thread is beëindigd. De methode public void join() kan hiervoor worden gebruikt.

Join thread A thread B join