You are on page 1of 6

Control per computador

Programaci Concurrent amb Java i El model dexecuci de Java i Definici de threads amb Java i Assignaci de prioritats

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Programaci amb Java - Model dexecuci i Compilaci de Java:

a Java byte-code s generat pel compilador de JAVA i s interpretat per la JVM. a AOT (ahead-of-time compilation): es genera codi natiu directament o es pasa a travs dun llenguatge intermediari (p.e. C) previ a lexecuci. a JIT (just-in-time compilation): la JVM compila el bytecode el primer cop que sutilitza. a s de hardware especfic que pot interpretar directament codi Java.

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Page 1

Programaci amb Java - Model dexecuci i En el cas AOT, lorganitzaci de la memria i la gesti dels processos concurrents s similar a daltres llenguatges. i En el cas del byte-code interpretat per la JVM hi ha dues opcions:
a Native-thread model: els threads del sistema operatiu sutilitzen per gestionar els threads de Java. La seva gesti depn del scheduler del S.O. Cada thread natiu consisteix en una JVM que interpreta el codi Java del thread corresponent (conceptulment ja que no s la manera en que simplementa).

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Programaci amb Java - Model dexecuci i ... :

a Green-thread model:
La JVM s un procs ms executat com un codi seqencial (com un thread ms a la mquina o com un procs sol en una mquina buida). En qualsevol cas, hi ha un comptador de programa global que apunta a la instrucci en curs de la JVM. Els threads sn tractats com abstraccions dins de la JVM. La seva gesti la realitza el scheduler de la JVM. El canvi de context implica les operacions descrites al mdul de programaci concurrent. La informaci gestionada consisteix igualment en:
La pila El codi (amb el seu comptador de programa) La informaci de caire administratiu

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Page 2

Java - Creaci de Threads


i Definint una classe com hereva de la classe Thread i Definint una classe que implementa linterface runnable (defineix el mtode run) El mtode run cont el codi executat pel thread. El thread sinicia cridant al mtode start. Un objecte Java que cont un (o varis) thread sanomena objecte actiu, en oposici a un objecte passiu.

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Java - Creaci de Threads


Per herncia de la classe Thread public class MyThread extends Thread { public void run() { // Code to be executed } } Inici del thread: ... MyThread m = new MyThread(); m.start(); ...

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Page 3

Java - Creaci de Threads


Implementaci del interface Runnable public class MyClass implements Runnable { public void run() { // Code to be executed } } Com que un objecte MyClass no s un Thread object, linicialitzaci s una mica ms complicada: ... MyClass m = new MyClass(); Thread t = new Thread(m); t.start(); ... Aquesta opci sutilitza per emular lherncia mltiple.

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Java - Creaci de Threads


Thread com a variable public class MyThread extends Thread { MyClass owner; public MyThread(MyClass m) { // constructor owner = m; } public void run() {// Code to be executed} } public class MyClass extends MySuperClass { MyThread t; public MyClass() { t = new MyThread(this);} public void start() {t.start();} } Fa possible que un objecte actiu contingui fils dexecuci multiples.

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Page 4

Java - Creaci de Threads


Thread com a classe interna public class MyClass extends MySuperClass { MyThread t; public MyClass() {t = new MyThread();} public void start() {t.start();} class MyThread extends Thread { public void run() {// Code to be executed} } } MyThread t accs directe als mtodes i atributs de MyClass.

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Java - Terminaci dels Thread


Un thread termina quan el seu mtode run finalitza. Per finalitzar un thread desde altre thread es recomana ls dun flag. public class MyClass implements Runnable { boolean continue = true; public void run() { while (continue) {// Code to be executed } } } El thread es finalitza assignant el valor false al flag continue flag. s recomanble l de mtodes accessors als atributs. Dormir els threads (sleep) no garanteix la seva terminaci.

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Page 5

Java - Assignaci de prioritats


Un creat hereta la prioritat del thread que el crea (per defecte la prioritat s NORM_PRIORITY i val 5). La prioritat es pot canviar cridant al mtode setPriority de la classe Thread (s un servei dinstncia). public class MyClass implements Runnable { public void run() { Thread t = Thread.currentThread(); t.setPriority(10); // Code to be executed } } El mtode static currentThread sutilitza per obtenir una referncia al thread de MyClass. Aquesta referncia sempra per cridar al mtode setPriority.

Departament de Telecomunicaci i dEnginyeria de Sistemes. Universitat Autnoma de Barcelona.

Page 6

You might also like