Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Barranquilla 2010
En la naturaleza se presentan innumerables ejemplos de procesos que se
Realizan de manera parela, simultáneos o concurrentes. Por ejemplo, para
el caso del lector, los procesos que está realizando todo su cuerpo integral,
mientras realiza la acción consciente, de leer este párrafo. En el plano de
los sistemas artificiales, la concurrencia es un denominador común, el
computador, la internet, los juegos, en los sistemas sofisticados de los
automóviles modernos, las actuales comunicaciones inalambricas, etc.
Por tales razones, la concurrencia es un fenómeno importante de tratar, ya
que permite el desarrollo de sistemas capaces de adelantar, múltiples
procesos simultáneamente. A su vez cada proceso se puede componer de
múltiples tareas, ejecutándose según ciertas reglas, de manera simultánea.
Se puede definir hilo como una secuencia única de control de flujo dentro
de un programa. Entendiendo que puede haber más de una secuencia de
control o hilos. Java permite realizar programación multihilo, el cual
consiste en programas que contienen dos o más partes que se ejecutan de
manera concurrente. Una parte que se ejecuta independientemente de las
demás se denomina un hilo (thread).
En un entorno de multitarea basada en hilos, el hilo es la unidad de código
más pequeña que se puede seleccionar para ejecución. La programación
basada en multihilos, permite escribir programas más eficientes ya que
optimizan los recursos de la Unidad Central de Proceso (CPU), al reducir al
mínimo los tiempos de inactividad. Este es un factor muy importante a
tener en cuenta en el manejo de entornos interactivos, como es el caso del
trabajo en la red, en dondelas velocidades de transmisión son mucho más
lentas que los requeridos por laCPU en el procesamiento de esos datos, así
como tambien durante el manejo del sistema de archivos, lectura y
grabación, que son más lentos que las velocidades de la CPU en su proceso.
Las animaciones y los juegos por ejemplo, requieren de una mayor
optimización de los recursos de CPU.
•Listo: Cuando se invoca el método start() del hilo, se dice que está en
estado listo. El método se arranca con la siguiente instrucción, para el
caso del hilo miHilo:
miHilo.start();
• Ejecutable:cuando el método start() se ejecuta, crea los recursos del
sistema necesarios para ejecutar el thread, programa el thread para
MULTIHILO Y MULTIPROCESO
Un hilo de ejecucion, en sistemas operativos, es una característica que permite a una aplicación
realizar varias tareas a la vez (concurrentemente). Los distintos hilos de ejecución comparten
una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de
autenticación, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a
cabo distintas funciones simultáneamente.
Un hilo es básicamente una tarea que puede ser ejecutada en paralelo con otra tarea.
Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en
conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo
proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos.
Cuando un hilo modifica un dato en la memoria, los otros hilos acceden a ese dato modificado
inmediatamente.
El proceso sigue en ejecución mientras al menos uno de sus hilos de ejecución siga activo.
Cuando el proceso finaliza, todos sus hilos de ejecución también han terminado. Asimismo en el
momento en el que todos los hilos de ejecución finalizan, el proceso no existe más y todos sus
recursos son liberados.
Los hilos se distinguen de los tradicionales procesos en que los procesos son –generalmente–
independientes, llevan bastante información de estados, e interactúan sólo a través
de mecanismos de comunicación dados por el sistema. Por otra parte, muchos hilos
generalmente comparten otros recursos de forma directa. En muchos de los sistemas
operativos que dan facilidades a los hilos, es más rápido cambiar de un hilo a otro dentro del
mismo proceso, que cambiar de un proceso a otro. Este fenómeno se debe a que los hilos
comparten datos y espacios de direcciones, mientras que los procesos, al ser independientes,
no lo hacen. Al cambiar de un proceso a otro el sistema operativo (mediante el dispatcher)
genera lo que se conoce como overhead, que es tiempo desperdiciado por el procesador para
realizar un cambio de contexto (context switch), en este caso pasar del estado de ejecución
(running) al estado de espera (waiting) y colocar el nuevo proceso en ejecución. En los hilos,
como pertenecen a un mismo proceso, al realizar un cambio de hilo el tiempo perdido es casi
despreciable.
Ejercicio Realizado.
Ya la necesidad de usar hilos
package cajatexto;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent we){
System.exit(0);
}
}
);
setSize(400,400);
setLocation(200,200);
show();
setContentPane(p);
}
public void actionPerformed(ActionEvent ae){
if(ae.getSource()==b1){
for(int i=0;i<100;i++){
if(i%2==0){
ta.setBackground(Color.BLUE);
}
else{
ta.setBackground(Color.RED);
}
}
}
if(ae.getSource()==b2){
ta.setBackground(Color.WHITE);
}
}
public static void main (String[] args) {
new cajatexto();
}