Sunteți pe pagina 1din 6

Sistemas Digitales II

RESUMEN
El presente artculo resume los temas estudiados de
programacin en Java con referencia a Hilos y Herencia y
presenta ejemplos de los mismos.
Palabras ClaveJava, Hilos, Herencia.
I. INTRODUCCIN
ava es un lenguaje de programacin de propsito general!
concurrente! orientado a o"jetos # "asado en clases $ue %ue
dise&ado espec'%icamente para tener tan pocas dependencias
de implementacin como %uera posi"le. ()*
+
II. ,I-OS
En las t.cnicas de programacin en general se "usca
proveer de la capacidad de /acer varias cosas a la ve0 # no
verse %or0ado a ejecutar los programas secuencialmente! o $ue
por lo menos esa sea la impresin $ue tenga el usuario %inal.
En la programacin concurrente /a# dos unidades
"1sicas de ejecucin2 los procesos # los su"procesos o /ilos.
En el lenguaje de programacin +ava la concurrencia /ace
m1s re%erencia a /ilos.
Dos tareas se dice $ue son concurrentes si transcurren
durante el mismo intervalo de tiempo.
-a programacin concurrente es el conjunto de t.cnicas
# notaciones $ue sirven para e3presar el paralelismo potencial
en los programas! as' como la solucin de pro"lemas de
comunicacin # sincroni0acin.
Proceso2
Un proceso es un programa en ejecucin con un estado
asociado. En este pueden e3istir varios /ilos de control
independientes. Cada proceso ocupa espacio de memoria
independiente.
Hilos2
-os /ilos e3isten dentro de un proceso! todo proceso
tiene por lo menos un /ilo. -os /ilos comparten los recursos
de un proceso! inclu#endo la memoria # arc/ivos a"iertos.
4
5rt'culo entregado el )) de mar0o de 67)8 -os autores son estudiantes de
Ingenier'a Electrnica en la 9undacin Universitaria los -i"ertadores.
:ilson Mart'ne0 Monta&a
Cada /ilo es una v'a simult1nea de ejecucin dentro del
espacio de memoria del proceso.
-a comunicacin entre /ilos se puede reali0ar a trav.s
del espacio de memoria $ue comparten.
-a ejecucin Multi;,ilos es esencialmente un
caracter'stica de la plata%orma +ava. Toda aplicacin tiene
por los menos un /ilo! o varios si se cuentan los /ilos del
<sistema< $ue /acen cosas como la gestin de la memoria # el
manejo de se&ales. =ero desde el punto de vista del
programador de la aplicacin! se inicia con un solo /ilo!
llamado el hilo principal. Este /ilo tiene la capacidad de
crear su"procesos adicionales.
Entonces una aplicacin concurrente es a$uella $ue se
descompone en un conjunto de procesos #>o /ilos. 5simismo
una aplicacin multi;/ilo est1 constituida por varios /ilos $ue
comparten el espacio de memoria de un proceso.
Independiente de la utili0acin de los /ilos! el desarrollo
de aplicaciones concurrentes involucra el uso de t.cnicas
espec'%icas # la superacin de di%icultades $ue no se presentan
en la implementacin de programas secuenciales.
Creacin de Threads
,a# dos %ormas de crear nuevos T/reads. Una consiste en
crear una nueva clase $ue /erede la clase java.lang.Thread #
so"recargar el m.todo run() de dic/a clase. El segundo
m.todo consiste en declarar una clase implementando la
inter%ace java.lang.Runnable! la cual declarara el m.todo
run()? posteriormente se crea un o"jeto de tipo T/read
pas1ndole como argumento al constructor el o"jeto creado de
la nueva clase.
Ejemplo de la creacin de un T/read derivado de la clase
Thread2
Public Class EjemploThread extends Thread
{ //Constructor
Public EjemploThread(String str){
Super(str);
}
//ede!inici"n de m#todo run()
public $oid run(){
!or(int i%&; i'(&; i)))
S*stem+out+println(,Este es el
Thread -. ) get/ame());
}
=ara ejecutar este nuevo T/read se de"e crear un o"jeto de
la clase EjemploThread # llamar el m.todo start()! /eredado
)
Wilson Martnez Montaa
!rogramacin en Java"Hilos y Herencia
Sistemas Digitales II
de la superclase T/read
$ue se encarga de llamar a run()2
EjemploThread miThread % ne0
EjemploThread(,1ilo de prueba.);
miThread+start();
Ejemplo de creacin de un T/read con el uso de la
inter%ace Runnable.
Public Class EjemploThread implements
unnable
{ //Se crea un nombre
String nameThread;
//Constructor
Public EjemploThread(String str){
nameThread % str;
}
//ede!inici"n de m#todo run()
public $oid run(){
!or(int i%&; i'(&; i)))
S*stem+out+println(,Este es el
Thread -. ) get/ame());
}
=ara ejecutar este nuevo T/read de crea un nuevo T/read
mediante el segundo procedimiento2
EjemploThread p % ne0 EjemploThread(,1ilo
de prueba.);
//Se crea un objeto de la clase Thread
//pas2ndolo el objeto unnable como
//argumento
Thread miThread % ne0 Thread(p);
//Se arranca el objeto de la clase Thread
miThread+start();
Ciclo de vida de un Thread
Un T/read puede presentar cuatro estados distintos2
Nuevo @NewA2 El T/read /a sido creado pero no
iniciali0ado! es decir! no se /a ejecutado aun el
m.todo start().
Ejecuta"le @RunnableA2 El T/read puede estar
ejecut1ndose siempre # cuando se le /a#a asignado u
determinado tiempo de C=U.
Blo$ueado @Blocked o Not RunnableA2 El T/read
podr'a estar ejecut1ndose! pero /a# alguna actividad
interna su#a impidi.ndolo.
Muerto @eadA2 -a %orma /a"itual e $ue un T/read
muera es %inali0ando el m.todo run(). Tam"i.n
puede llamarse el m.todo stop() de la clase T/read
aun$ue no es recomenda"le.
Sincronizacin
-a sincroni0acin nace de la necesidad de evitar $ue dos o
m1s T/reads traten de acceder a los mismos recursos al
mismo tiempo. Tam"i.n es necesaria cuando un T/read de"e
esperar a $ue est.n preparados los datos $ue le de"e
suministrar otro T/read.
Public s*nchroni3ed $oid
metodoSincroni3ado
{ //4ccediendo por ejemplo a las
//$ariables de un objeto
+++
+++
}
-a sincroni0acin previene las inter%erencias solamente
so"re un tipo de recursos2 la memoria reservada para un
o"jeto.
Prioridad
=ara garanti0ar la correcta ejecucin de un programa se
esta"lecen prioridades en los T/reads de %orma $ue se
produ0ca un reparto m1s e%iciente de los recursos disponi"les.
5l crearse un nuevo T/read este /eredara la prioridad del
T/read desde el $ue /a sido iniciali0ado. -as prioridades
vienen de%inidas por varia"les miem"ro de la clase T/read
con valores enteros2
M5CD=RIORITE )7
MIND=RIORITE )
NORMD=RIORITE F
Mtodos de la clase Thread.
getT/readGroup@A
Retorna el grupo de /ilo a $ue pertenece el /ilo actual.
interrupt@A
Interrumpe el /ilo.
interrupted@A
C/e$uea si el /ilo actual se /a interrumpido.
is5live@A
C/e$uea si el /ilo esta vivo.
isDaemon@A
C/e$uea si el /ilo es un /ilo de servicio a otros.
isInterrupted@A
C/e$uea si el /ilo /a sido interrumpido.
join@A
6
Sistemas Digitales II
Espera a $ue el /ilo se
muera.
join@long millisA
Espera /asta millis milisegundos para $ue el /ilo
muera.
run@A
Constitu#e el cuerpo de una tarea o /ilo. Es llamado por el
m.todo start@A! despues $ue la tarea apropiada del sistema se
/a#a iniciali0ado. -a tarea actual se detendr1 cada ve0 $ue
run@A devuelva el control. Este es el Hnico m.todo de la
inter%a0 Runna"le.
setDaemon@"oolean onA
Marca este /ilo como un /ilo de servi iusuario o /ilo
demonio.
setName@String nameA
=ermite asignarle a la tarea un nom"re con el cual se la
puede identi%icar..
set=riorit#@int neI=riorit#A
Cam"ia la prioridad de la tarea! entre los valores ) # )7.
sleep@long millisA
=rovoca $ue el int.rprete de +ava ponga la tarea a dormir
durante un tiempo indicado en milisegundos! transcurrido
dic/o tiempo la tarea estar1 disponi"le para ejecucin.
start@A
-e indica al interprete de +ava $ue cree un conte3to de
ejecucin de una tarea e inicie su ejecucin. 5cto seguido se
invoca el m.todo run@A de esta tarea en el nuevo conte3to de
ejecucin. De"e tenerse cuidado de llamar a start@A no m1s de
una ve0 para una tarea determinada.
toString@A
Retorna la cadena $ue representa el /ilo! $ue inclu#e
nom"re! prioridad # grupo del /ilo.
#ield@A
,ace $ue el interprete detenga temporalmente la ejecucin
del o"jeto del /ilo # permita $ue el siguiente /ilo disponi"le
se ejecute
III. ,ERENCI5
,a# clases $ue pueden compartir gran parte de sus
caracter'sticas.
-a /erencia es un mecanismo $ue permite reutili0ar clases2
lo $ue se "usca es crear una nueva clase $ue e3tiende la
%uncionalidad de una clase e3istente sin $ue sea necesario
reescri"ir el cdigo asociado a esta Hltima.
,erencia /ace re%erencia a la posi"ilidad de de crear
nuevas clases a partir de clases #a e3istentes! estas nuevas
clases tendr1n todos los atri"utos # los m.todos de su
superclase o clase padre! adem1s de $ue se le podr1n incluir
otros atri"utos # m.todos propios.
Superclase: Es la clase a partir de la cual se crea o deriva
una nueva clase. Una clase /ija /ereda autom1ticamente los
atri"utos # m.todos de la clase padre.
Subclase2 Es la clase $ue se deriva a partir de otra. ,ereda
autom1ticamente los atri"utos # m.todos de su superclase.
=uede pensarse como la especiali0acin de otra clase. -a
su"clase admite la de%inicin de nuevos atri"utos o m.todos
para aumentar la especiali0acin de la clase.
Ejemplos2
9igura )Ejemplo de Superclase # Su"clases.
9igura 6 Ejemplo de Superclase # Su"clases
Una clase se puede relacionar con otra mediante
cola"oracin! es decir! cuando una clase contiene un o"jeto de
otra clase como atri"uto. Si este es el caso no se debe
implementar la herencia.
J
Sistemas Digitales II
=ara implementar el mecanismo de /erencia para una
su"clase se /ace uso de la pala"ra reservada e!tends.
Class subclase extends superclase
{ //nue$os campos * m#todos 5ue
//de!inen una nue$a subclase
//ir6an a5u6
}
=ara acceder a miem"ros de la superclase desde la su"clase
se /ace uso de l a pala"ra reservada super.
Generalmente! en un constructor! lo primero $ue se
encuentra es una llamada al constructor de la clase padre con
super @KA. Si no se pone nada! se llama al constructor por
de%ecto de la superclase antes de ejecutar el constructor de la
su"clase.
5l tra"ajar el mecanismo de /erencia en java es posi"le
$ue se $uiera re$uiera re;de%inir m.todos! lo anterior para $ue
aun cuando la su"clase /ereda las operaciones de su
superclase tenga la posi"ilidad de modi%icar localmente el
comportamiento de dic/as operaciones o en otras pala"ras re
de%inir el m.todo.
El polimor%ismo es entonces $ue al re;de%inir m.todos!
o"jetos de di%erentes tipos pueden responder de %orma
di%erente a la misma llamada! de esta %orma se puede escri"ir
cdigo de %orma gen.rica sin preocuparse del m.todo
concreto $ue se ejecutara en cada momento.
LMu. puedo /acer en una su"claseN
-os campos /eredados pueden ser usados
directamente as' como cual$uier otro campo.
=ueden ser declarados campos en la su"clase con el
mismo nom"re de los $ue aparen en la superclase.
=uede declarar nuevos campos en la su"clase $ue no
est1n en la superclase.
-os m.todos /eredados se pueden utili0ar
directamente como son.
=uede declarar nuevos m.todos en la su"clase $ue no
est1n en la superclase.
=uede escri"irse un constructor de una su"clase $ue
invo$ue al constructor de la superclase de manera
impl'cita o /aciendo uso de la pala"ra reservada
super.
=ara tener en cuenta...
El principio de sustitucin de -isOov2
PDe"e ser posi"le utili0ar cual$uier o"jeto instancia de una
su"clase en el lugar de cual$uier o"jeto instancia de su
superclase sin $ue la sem1ntica del programa escrito en los
t.rminos de la superclase se vea a%ectadoQ
So"recarga de m.todos2
No es lo mismo polimor%ismo $ue so"recarga de m.todos! es
decir distintos m.todos con el mismo nom"re pero di%erentes
par1metros.
9inalmente en la programacin en +ava usando la pala"ra
reservada "#nal se puede2
Evitar $ue un m.todo se pueda re;de%inir en una
su"clase.
Evitar $ue se pueda crear su"clases de una clase
dada.
IR. E+EM=-O ,I-OS
En cada uno de ellos se puede o"servar2
-a clase T/read est1 en el pacOage java.lang. =or
tanto no es necesario el import.
El constructor pu"lic T/read@String strA reci"ie un
par1metro $ue es la identi%icacin del T/read.
El m.todo run contiene el "lo$ue de ejecucin del
T/read. Dentro de .l! el m.todo getName@A devuelve
el nom"re del T/read @el $ue se /a pasado como
argumento al constructorA.
El m.todo main crea dos o"jetos de clase
T/readEjemplo # los inicia con la llamada al m.todo
start@A. @el cual inicia el nuevo t/read # llama al
m.todo run@A A.
O"serva en la salida el primer mensaje! de
%inali0acin del t/read main. -a ejecucin de los
t/reads es as'ncrona. Reali0a la llamada al m.todo
start@A! .ste le devuelve control # continua su
ejecucin! independiente de los otros t/reads.
En la salida los mensajes de un t/read # otro se van
me0clando. -a m1$uina virtual asigna tiempos a
cada t/read.
8
Sistemas Digitales II
R. E+EM=-O ,ERENCI5
Ejemplo de ,erencia en operaciones aritm.ticas2
Implementar dos clases para operar Suma # Resta. Cada
clase tiene como atri"uto valor)! valor6 # resultado. -os
m.todos a de%inir son cargar) @$ue iniciali0a el atri"uto
valor)A! carga6 @$ue iniciali0a el atri"uto valor6A! operar @$ue
en el caso de la clase <Suma< suma los dos atri"utos # en el
caso de la clase <Resta< /ace la di%erencia entre valor) #
valor6! # otro m.todo mostrarResultado.
5l anali0ar am"as clases se encuentra $ue muc/os atri"utos #
m.todos son id.nticos. En estos caso es mas conveniente
de%inir una clase padre $ue agrupe dic/os atri"utos #
responsa"ilidades comunes.
Ejemplo de /erencia en o"jetos a personas2
Con%eccionar una clase =ersona $ue tenga como atri"utos
el nom"re # la edad. De%inir como responsa"ilidades un
m.todo $ue cargue los datos personales # otro $ue los
imprima.
=lantear una segunda clase Empleado $ue /erede de la clase
=ersona. 5&adir un atri"uto sueldo # los m.todos de cargar el
sueldo e imprimir su sueldo.
De%inir un o"jeto de la clase =ersona # llamar a sus
m.todos. Tam"i.n crear un o"jeto de la clase Empleado #
llamar a sus m.todos.
F
Sistemas Digitales II
Ejemplo de /erencia en o"jetos a personas2
Con%eccionar una clase Socio $ue tenga como atri"utos el
nom"re # la antigSedad. De%inir como responsa"ilidades un
m.todo $ue cargue los datos # otro $ue los imprima.
RI. =ROEECTOS 5NDROID IEEE
Tevin Benton! -. +ean Camp! Rai"/av Garg!
Studin! the "##ectiveness o# $ndroid $pplication
Permissions %e&uests
Nic/olas Mul/ern! Neil McCa%%re#! Nic/olas
Beretta! Eugene C/a"ot =/D! Eing Sun =/D!
'esi!nin! $ndroid $pplications usin! (oice
Controlled Commands
5mit Sing/ai! +o# Bose) %educin! Po*er
Consumption in +raphic ,ntensive $ndroid
$pplications.
5"dulla/ 50%ar! Tim;TIang Ra#mond C/oo! -in
-iu! $ stud o# ten popular $ndroid mobile (o,P
applications: $re the communications encrpted-
,ossain S/a/riar! Sara/ Nort/! and EdIard
MaIangi! Testin! o# Memor .ea/ in $ndroid
$pplications
Tanuj s. Ro/anOar! RaOes/ B/ujade! 5mit Sin/al!
B/upendra Rerma) $ %evie*: %emote 0ile
Mana!er #or $ndroid Plat#orm usin!
0TP1$ndroid
RE9ERENCI5S
()* /ttp2>>es.IiOipedia.org>IiOi>+avaD@lenguajeDdeDprogramaciUCJUBJnA
(6*
(J* /ttp2>>java#a.com.ar>
(8*
V

S-ar putea să vă placă și