Professional Documents
Culture Documents
de
las
del CPU que los de prioridad baja. Los de prioridad alta pueden
desalojar a uno de prioridad ms baja.
Por ejemplo, cuando el de prioridad ms baja se esta ejecutando
y otro de prioridad ms alta reanuda su ejecucin, este segundo
desalojar al de prioridad ms baja. Los hilos con la misma prioridad
tienen el mismo acceso al CPU. Para establecer la prioridad de un hilo
se utiliza setPriority(), que es miembro de la clase Thread. Su forma
general es: final void setPriority(int nivel) en donde el nivel es la
nueva prioridad del hilo, el valor del nivel debe de estar entre
MIN_PRIORITY y MAX_PRIORITY. Actualmente estos valores son 1 y 10.
Para establecer la prioridad por default que tienen los hilos de nuevo
se usa NORM_PRIORITY, es 5, para obtener la prioridad de un hilo
usamos getPriority() de Thread: final int getPriority
Sincronizacin de hilos
Todos los hilos comparten el mismo espacio de direcciones y
otros
recursos
como
pueden
ser
archivos
abiertos.
Cualquier
de
computadores
con
mltiples
CPUs
(sistemas
ha
finalizado,
as
sucesivamente.
de
un
mtodo
synchronized.
objeto
notifyAll_: despierta todos los hilos que realizaron una llamada a wait
sobre el mismo objeto. El hilo con mayor prioridad de los despertados
es el primero en ejecutarse.
Ejemplos de multitarea
import java.util.Calendar;
import java.util.logging.Level;
import java.util.logging.Logger;
public class EjemploTreah implements Runnable{
@Override
public void run() {
while(true) {
try {
Calendar cal=Calendar.getInstance();
System.out.println(
cal.get(Calendar.HOUR)+
":"+cal.get(Calendar.MINUTE)+":"
+cal.get(Calendar.SECOND));
Thread.sleep(1000);
} catch (InterruptedException ex) {
Logger.getLogger(
EjemploTreah.class.getName())
.log(Level.SEVERE,
null,
ex);
}
}
}
public static void main(String arg[]){
Thread th= new Thread(new EjemploTreah());
th.start();
System.out.print("Seguimos con la "
+ "ejecucion del Programa Mientras "
+ "se ejecuta el Hilo ");
}
class java1001 {
static public void main( String args[] ) {
// Se instancian dos nuevos objetos Thread
Thread hiloA = new Thread( new MiHilo(),"hiloA" );
Thread hiloB = new Thread( new MiHilo(),"hiloB" );
// Se arrancan los dos hilos, para que comiencen su ejecucin
hiloA.start();
hiloB.start();
// Aqu se retrasa la ejecucin un segundo y se captura la
// posible excepcin que genera el mtodo, aunque no se hace
// nada en el caso de que se produzca
try {
Thread.currentThread().sleep( 1000 );
}catch( InterruptedException e ){}
// Presenta informacin acerca del Thread o hilo principal
// del programa
System.out.println( Thread.currentThread() );
// Se detiene la ejecucin de los dos hilos
hiloA.stop();
hiloB.stop();
}
}
class NoHaceNada {
// Esta clase existe solamente para que sea heredada por la clase
// MiHilo, para evitar que esta clase sea capaz de heredar la clase
// Thread, y se pueda implementar el interfaz Runnable en su
// lugar
}
class MiHilo extends NoHaceNada implements Runnable {
public void run() {
// Presenta en pantalla informacin sobre este hilo en particular
System.out.println( Thread.currentThread() );
}
}
Como se puede observar, el programa define una clase MiHilo que
extiende a la clase NoHaceNada e implementa el interfaz Runnable. Se
redefine el mtodo run() en la clase MiHilopara presentar informacin
sobre el hilo.
La nica razn de extender la clase NoHaceNada es proporcionar un
ejemplo de situacin en que haya que extender alguna otra clase,
adems de implementar el interfaz.
En el ejemplo 2 muestra el mismo programa bsicamente, pero en este
caso extendiendo la clase Thread, en lugar de implementar el
interfaz Runnable para crear el programa multihilo.
class java1002 {
static public void main( String args[] ) {
// Se instancian dos nuevos objetos Thread
Thread hiloA = new Thread( new MiHilo(),"hiloA" );
Thread hiloB = new Thread( new MiHilo(),"hiloB" );
// Se arrancan los dos hilos, para que comiencen su ejecucin
hiloA.start();
hiloB.start();
// Aqu se retrasa la ejecucin un segundo y se captura la
// posible excepcin que genera el mtodo, aunque no se hace
// nada en el caso de que se produzca
try {
Thread.currentThread().sleep( 1000 );
ARCHIVO DE JAVA
Profesora:
Diana Garca
Bachiller:
Yonmar Guevara
Jetzimar Sousa
Gleyvert Lagos