UNIDAD 4
PROGRAMACIÓN CONCURRENTE MULTIHILO
PROGRAMACIÓN CONCURRENTE MULTIHILO
- CONCEPTO DE HILO
Concepto de hilo
Hilo (theread) llamado también proceso ligero o subproceso, es la unidad
de ejecución de un proceso y esta asociado con una secuencia de instrucciones
un conjunto de registros y una pila.
Cuando se crea un proceso el S.O crea su
primer hilo (hilo primario) en la cual puede,a su vez,crear hilos adicionales. esto
pone de manifiesto que un proceso no ejecuta,si no que es sólo el espacio de
direcciones donde recide el código que es ejecutado mediante uno o más hilos.
En un S.O tradicional. Cada proceso tiene un espacio de direcciones y
un único hilo de control por ejemplo, considere que un programa que incluya la
siguiente secuencia de operaciones para actualizar el saldo de una cuenta
bancaria cuando se efectúa un nuevo ingreso:
Saldo=Cuenta.ObtenerSaldo ();
Saldo+=ingreso;
Cuenta.EstablecerSaldo (saldo);
Cada hilo se ejecuta de forma estrictamente secuencial y tiene su propia pila en
estados de los registros de UCP y su propio contador de un programa en cambio
comparte el mismo espacio de direcciones, lo que significa compartir también las
mismas variables globales, el mismo conjunto de ficheros abiertos, procesos hijos
(no hilos hijos), señales, semáforos, etc.
A continuación se mostrara un pequeño vídeo del uso de multihilos.
- CREACIÓN Y CONTROL DE HILOS
Los hilos de java se pueden crear en dos formas: escribiendo una nueva clase
derivada de Theread, o bien haciendo una clase existente implementa la interfaz
Runnable .
La clase Thread,que implemente la interfaz Runnable,de forma resumida,está
definida así:
public class Thread extends Object implements Runnable
{
//Atributos
static int MAX_PRIORITY;
//Prioridad máxima que un hilo puede tener.
static int MIN_PRIORITY;
//Prioridad mínima que un hilo puede tener.
static int NORM_PRIORITY;
//Prioridad asignada por omisión a un hilo.
//Constructores
Thread ([argumentos])
//Métodos
static Theread currentThread()
//Devuelve una referencia al hilo que actualmente esta en ejecución.
long getID()
//Devuelve el identificador del hilo
String getName()
//Devuelve el nombre del hilo.
int getPriority()
//Devuelve la prioridad del hilo.
void interrupt()
//Envía este hilo al estado de preparado.
boolean isAlive()
//Verifica sí este hilo está vivo (no ha terminado).
boolean isDaemon()
//Verifica sí este hilo es un demonio. Se da este nombre a un hilo se ejecuta en segundo plano, realizando una operación específica en tiempos predefinidos, o bien en respuestas a ciertos eventos.
boolean is Interrupted()
//Verifica si este hilo ha sido interrumpido.
void join([milisegundos[. nanosegundos]])
//Espera indefinidamente o el tiempo especificado,a que este hilo termine (a que muera).
void run()
En esta imagen se muestra la creación y utilización de un hilo, este hilo es llamado hilo.Start();
- SINCRONIZACIÓN DE HILOS
Cuando se están utilizando hilos múltiples, algunas veces es necesario coordinar
las actividades de dos o más. El proceso por el cual se logra esto se
llama sincronización.
La razón más común para la sincronización es cuando dos o
más hilos necesitan acceso a un recurso compartido que sólo puede ser utilizado
por un hilo a la vez.
Otra razón para la sincronización es cuando un hilo está
esperando un evento causado por otro hilo. En este caso, debe de haber algún
medio por el cual el primer hilo se mantenga en estado suspendido hasta que el
evento ocurra.
La sincronización esta soportada por la palabra clave synchronized y por unos
cuantos métodos bien definidos que tienen todos los objetos.
A continuación se muestra un vídeo donde se utiliza la sincronización de distintos hilos:
- PROGRAMAS VISTOS EN CLASE
Este es el diseño al momento de crearlo
Se utiliza un hilo.Start(); para iniciar la carrera mediante un botón llamado btnIniciar, este se detendrá cuando otro hilo se ejecute, en caso contrario seguirá en ejecución hasta que termine el programa.
Utilizamos otro hilo.Sleep(); para detener por un momento la carrera, este hilo interrumpe al hilo.Start(); ya que después del tiempo estimado este prosigue su ejecución hasta terminar el programa por completo.
Para el botón abort (abortar) también se utiliza un hilo.Abort(); quiere decir que al momento de presionar el botón este programa se cerrara y terminara su ejecución.
UNIDAD 5
PROGRAMACIÓN DE DISPOSITIVOS MÓVILES
- INTRODUCCIÓN
La generalización en los últimos años de teléfonos móviles, smartphones, PDs,
etc.
Ha generado una importante necesidad de aplicaciones para este tipo de
dispositivos.
Las prestaciones de los dispositivos móviles se incrementan día a día, posibilitando la implementación de aplicaciones muy interesantes tales como:
- Acceso a Internet y conectividad mediante Bluetooth.
- Envío de mensajes cortos.
- DISPOSITIVOS MÓVILES
Los dispositivos móviles (también conocidos como computadora de
mano, laptop, celulares entre otros) son aparatos de pequeño tamaño, con
algunas capacidades de procesamiento, con conexión permanente o intermitente
a una red, con memoria limitada, diseñados específicamente para una función,
pero que pueden llevar a cabo otras funciones más generales.
- CLASIFICACIÓN Y APLICACIONES DE LOS DISPOSITIVOS MÓVILES
Los conceptos de móvil y sin cables muchas veces se confunden. Por ejemplo, un
PDA con datos en él y aplicaciones para gestionarlos puede ser móvil, pero no
tiene por qué ser wireless, ya que puede necesitar un cable para conectarse al
ordenador y obtener o enviar datos y aplicaciones.
Veamos otro ejemplo. Un
teléfono móvil equipado con un pequeño navegador puede navegar por Internet.
En este caso, se considera wireless, pero no se considerará móvil si no dispone
de un valor añadido en forma de aplicaciones que aporte alguna función cuando
no está conectado a otros sistemas.
Si el PDA es capaz de conectarse a una red
para obtener datos "en medio de la calle", entonces también será wireless.
Algunas de las características que hacen que estos dispositivos sean diferentes de
los ordenadores de sobremesa son los siguientes:
- Funcionalidad limitada.
- No necesariamente extensible y actualizable.
- En pocos años el usuario deberá cambiarlo.
- Más barato.
- Menos complicado en su manejo.
- Fácil de aprender su operación.
- No se requieren usuarios expertos.
Algunos de estos dispositivos son los siguientes:
- Comunicadores de bolsillo.
- Teléfonos con pantalla para Internet (Internet Screen Phones).
- Sistemas de navegación de automóviles.
- Sistemas de entretenimiento.
- Sistemas de televisión e Internet (WebTV).
- Teléfonos móviles.
- AMBIENTES DE LAS APLICACIONES
El desarrollo de aplicaciones móviles es un nuevo animal, y los CIO no deben
pensar en domarlo usando las mismas viejas tretas. Las compañías, impulsadas
por el creciente número de smartphones y tablets, junto con redes móviles más
capaces, buscan cómo emplear las herramientas móviles para transformar sus
procesos core y sus modelos de negocio.
El departamento IT necesita una gestión del ciclo de vida de las aplicaciones
móviles que tome en cuenta el desarrollo, distribución, seguridad, soporte y
mejora.
Estas son áreas que dicho departamento tiene que planear antes de
iniciar el proceso de desarrollo, porque impactarán el enfoque en el desarrollo de
aplicaciones que la organización adopte.
Y los equipos IT deben entregar esas nuevas capacidades móviles tomando en
cuenta la rapidez con que cambia el ambiente. Mientras los operadores móviles
despliegan servicios con mayor rapidez, también están recortando los planes de
datos ilimitados. Muchos negocios dejan de comprar dispositivos móviles y se
avienen a los que los empleados poseen.
Este modelo BYOD (Bring Your Own
Device) significa que el departamento IT tiene que dar soporte a más plataformas
y proveer seguridad y gestión en este nuevo ambiente.
El principal reto será soportar aplicaciones empresariales en iOS, Android,
Windows Mobile y otros sistemas operativos, en un ambiente donde el usuario –no
el área IT– es quien decide cuándo actualizar el sistema operativo.
https://www.maxglaser.net/sobre-la-creacion-de-un-ambiente-para-el-desarrollo-de-aplicaciones-en-android-y-el-nexus-one/
- PROTOCOLO DE INTERFAZ ENTRE APLICACIONES
Interfaz de programación de aplicaciones o API es el conjunto de funciones y
procedimientos que ofrece cierta biblioteca para ser utilizado por otro software
como una capa de abstracción. Son usadas generalmente en las "librerías".
Es una fuente de código basado en la especificación destinada a ser utilizada
como una interfaz de componentes de software para comunicarse entre sí.
Una API puede incluir especificaciones para las rutinas y estructuras de datos , las
clases de objetos y variables.
Una especificación de API puede tomar muchas formas, incluyendo una norma
internacional, tales como POSIX la documentación o el vendedor como el
Microsoft API de Windows , o las bibliotecas de un lenguaje de programación, por
ejemplo, la Biblioteca de plantillas estándar de C + + o Java API.
Una API difiere de una interfaz de aplicación binaria (ABI) en la que el primero es
de código abierto basado mientras que el segundo es una interfaz binaria.
Protocolo para dispositivos móviles:
Este es un pequeño vídeo acerca de las interfaces móviles:
- PROGRAMACIÓN DE TELÉFONOS MÓVILES Y PDA
Siempre presentes a nuestro alrededor, los teléfonos móviles han agregado un sin
fin de funciones que los hace cada vez mas parecidos a computadoras de bolsillo.
Es así que la pronosticada convergencia tecnológica (computadora-TV-cámara
fotografica-teléfono) está cada día más cercana y parece tener la forma de
teléfono.
Los teléfonos móviles actuales permiten alojar en ellos o acceder desde ellos a
programas que pueden realizar muchas tareas que hasta hace poco tiempo solo
estaban destinadas a ser realizadas por computadoras, palmtops o cámaras
fotográficas.
Desde la aparación de móviles con sistemas operativos que permitían el agregado
de algún tipo de programa surgió la posibilidad de programar para los mismos.
La
desventaja fue, durante bastante tiempo, que cada módelo de aparato tenía que
ser programado en una forma específica. Había diferencia entre marcas e incluso
entre módelos de una misma marca.
Programación móvil en Visual Studio
https://www.youtube.com/watch?v=OcE7s3xl_34
En este link se encuentran algunas herramientas para la programación móvil:
http://programacionmovilufps.blogspot.mx/
Comentarios
Publicar un comentario