Cuando un programa ejecuta, empieza a ejecutar, inicializa y llama
métodos hasta terminar, está siguiendo un solo thread
, es decir un solo lugar de contol para el programa. Multithreading
permite que varios
threads de ejecución corran simultáneamente
dentro del mismo programa sin interferir entre sí
Cada thread (hilo, flujo de control del programa) representa un proceso individual ejecutándose en un sistema. A veces se les llama procesos ligeros o contextos de ejecución. Típicamente, cada thread controla un único aspecto dentro de un programa, como puede ser supervisar la entrada en un determinado periférico o controlar toda la entrada/salida del disco.
Todos los threads comparten los mismos recursos, al contrario que los
procesos en donde cada uno tiene su propia copia de código y datos
(separados unos de otros). Gráficamente, los threads se parecen
en su funcionamiento a lo que muestra la figura siguiente:
Si queremos hacer que un applet funcione con threads pueden
seguirse los siguientes pasos:
public class MyAppletClass extends java.applet.Applet{ }debe transformarse en:
public class MyAppletClass extends java.applet.Applet implements Runnable{ }Esto incluye el comportamiento que el applet requiere para correr un thread , en particular el método run() .
Thread Runner;
public void start() { if (Runner == null) { Runner = new Thread(this); Runner.start(); } }Si cambiamos start() para que no haga nada, ¿Dónde pongo el cuerpo de mi applet? en un nuevo método run () que se ve como sigue:
public void run() { // lo que hacia el applet }Además hay que agregar un método stop () para suspender la ejecución del thread.
public void stop() { if (runner != null) { runner.stop(); runner = null; } }
Ejemplos
ThreadLister.java ThreadLister.html
TCP/IP (Transmission Control Protocol/Internet Protocol) es el conjunto
de protocolos de redes que usan los hosts de Internet para comunicarse
entre sí.
Algunos términos:
TCP/IP es un conjunto de protocolos de comunicaciones. El nombre proviene de dos de ellos: TCP (Transmission Control Protocol) e IP (Internet Protocol). Sin embargo tambien incluye UDP (User Datagram Protocol), ICMP (Internet Control Message Protocol) y IGMP (Internet Group Multicast Protocol) entre otros.
Estos protocolos definen formatos estándar para intercambiar
información entre
hosts sin importar la conexión física
entre ellas.
Arquitectura de Redes TCP/IP
Hay cuatro capas en el modelo de redes TCP/IP (contrastar con OSI).
Cada protocolo en la suite de TCP/IP provee comunicación entre entidades
en cada nivel. Las capas superiores utilizan a las inferiores para transmitir
datos de host A host. Las capas son:
El paquete java.net
Es el paquete en Java que incluye los servicios de red. Hay tres tipos
de clases incluídas:
Uno de los propósitos de Java es permitir recibir y ejecutar programas desde cualquier lugar en la red. Para permitir esto, el runtime de Java limita qué pueden hacer las clases que se obtienen de la red.
Por ejemplo, Netscape Navigator 2.0 le dá más privilegios al código cargado del disco local que al que viene de la red. Una clase cargada de un daemon HTTP solo puede crear conexiones hacia el host desde el cual fue traído, mientras que si viene del host local puede conectarse a cualquier host. En cambio, el appletviewer de Sun puede configurarse para comportarse como el Navigator o no tener ninguna restricción a la conectividad en red. Las aplicaciones no tienen estas restricciones que tienen los applets.
La versión 1.1 del Java permite configurar las características de seguridad en los browsers (Netscape Navigator 4.07 o superior, Internet Explorer 4.0 o superior), para esto, se han definido dos tipos de applets: Firmadas y No-Firmadas (signed , unsigned)
Para establecer una "firma" digital en un applet se requiere el uso del programa jar del JDK 1.1
Ejemplos
Fetch.java FetchImageTest.java GetURLInfo.java
Client.java AppletClient.java ClientM.java (versión multithreaded)
Server.java ServerM.java (versión multithreaded)
UDPReceive.java UDPSend.java
Práctica 4: