Thread

Páginas: 7 (1683 palabras) Publicado: 26 de febrero de 2013
-------------------------------------------------
Mòdul 9
-------------------------------------------------
Programació de serveis i processos

Unitat formativa 2
Processos i fils




Nucli formatiu 2
Programació multifil



1. Què és un fil d’execució? 3
1.1. Els threads en Java 3
2. El cicle de vida d’un thread 4
2.1. Thread creat 4
2.2. Threatexecutable 4
2.3. Thread bloquejat 4
2.4. Thread mort 4
3. Crear i executar un thread 5
3.1. Extendre la classe Thread 5
3.2. Implementant la interfície Runnable 6
4. Mètodes de control de threads 7
5. Sincronització de threads 8
6. Comunicació entre threads 9
6.1. Utilització de wait(), notify() i notifyAll() 9

Què és un fil d’execució?
Un fil d'execució (en anglèsThread) és una característica que permet a una aplicació realitzar diverses tasques concurrentment. Els diferents fils d'execució comparteixen una sèrie de recursos tals com l'espai de memòria, els arxius oberts, situació d'autenticació, etc. Aquesta tècnica permet simplificar el disseny d'una aplicació que ha de dur a terme diverses funcions simultàniament.
Els fils d'execució que comparteixen elsmateixos recursos són coneguts com un procés. El fet que els fils d'execució d'un mateix procés comparteixin els recursos fa que qualsevol d'aquests fils pugui modificar aquests.
El procés segueix en execució mentre almenys un dels seus fils d'execució segueixi actiu. Quan el procés és acabat, tots els seus fils d'execució també ho són. Així mateix en el moment en el qual tots els fils d'execuciófinalitzen, el procés no existeix més i tots els seus recursos són alliberats.
Alguns llenguatges de programació tenen característiques de disseny expressament creades per a permetre la programació amb fils d'execució (com Java o Delphi). Uns altres (la majoria) desconeixen l'existència de fils d'execució i aquests han de ser creats mitjançant crides a biblioteca especials que depenen del sistemaoperatiu en el qual aquests llenguatges estan sent utilitzats (com és el cas del C i del C++).
Un exemple de la utilització de fils és tenir un fil atent a la interfície gràfica (icones, botons, finestres), mentre un altre fil fa una llarga operació internament. D'aquesta manera el programa respon de manera més àgil a la interacció amb l'usuari. També poden ser utilitzats per una aplicacióservidora per a donar servei a múltiples clients.
Els threads en Java
La màquina virtual Java (JVM) és un sistema multifil, és a dir, és capaç d'executar diversos
fils d'execució simultàniament. La JVM gestiona tots els detalls: assignació de temps
d'execució, prioritats, etc, de manera similar una de com gestiona un sistema operatiu múltiples processos. La diferència bàsica entre un procés delsistema operatiu i thread
Java és que els fils corren dins de la JVM, que és un procés del sistema operatiu i per
tant tots comparteixen els recursos, inclosa la memòria i les variables i objectes allà definits. A aquest tipus de processos on es comparteixen els recursos se’ls anomena a vegades processos lleugers.

El cicle de vida d’un thread
Un thread pot tenir diferents estats durant la sevaexecució:
yield


wait, sleep, operació E/S

start
no runnable
bloquejat

new thread
nou thread

runnable
executable


acaba el mètode run

dead
mort



Thread creat
Quan s’instancia la classe Thread (o una subclasse) es crea un nou Thread que està en el seu estat inicial new thread. En aquest estat és simplement un objecte més. No existeix encara el thread enexecució. L’únic mètode que es pot invocar sobre ell és el mètode start().
Threat executable
Quan s’invoca el mètode start() sobre el fil el sistema crea els recursos necessaris, el planifica (li assigna prioritat) i crida al mètode run(). En aquest moment el fil està corrent, es troba en estat runnable.
Thread bloquejat
Si el mètode run() invoca internament el mètode sleep() o wait() o el...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • thread
  • Lemmon Thre
  • Thread Ejemplo
  • Three Times
  • Thread de libros
  • lemon three
  • Three towers
  • onetwo three

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS