Tareas en segundo plano AsyncTask Thread

Tamaño: px
Comenzar la demostración a partir de la página:

Download "Tareas en segundo plano AsyncTask Thread"

Transcripción

1 Tareas en segundo plano AsyncTask Thread Programació De Dispositius Mòbils PRDM Cristobal Raya Giner 2015

2 Hilos de ejecución En una aplicación Android, todas las actividades, los servicios y los broadcast receivers se ejecutan en el mismo hilo de ejecución, el llamado hilo principal, main thread, o GUI thread. Un hilo de ejecución se puede definir de forma simple como un conjunto de procesos con diferentes tareas que se ejecutan consecutivamente. Con un solo hilo, los procesos han de ejecutarse secuencialmente, y en caso de que uno de ellos ocupara un tiempo excesivamente largo, podría llegar hasta bloquear la ejecución. Hilo principal Ejecución de los Procesos 5 s 30 s 15 s 20 s = 70 s Para reducir el tiempo de ejecución y principalmente reducir la posibilidad del bloqueo de la ejecución, se utiliza la multitarea que permite ejecutar varios hilos simultáneamente y ejecutar simultáneamente varios procesos. El sistema Android monitoriza las operaciones realizados en el hilo principal y detecta aquellas que superen los 5 segundos, y avisa con el mensaje Application Not Responding que permite decidir al usuario si esperar o forzar el cierre de la aplicación. Hilos multitarea Los hilos multitarea, también se conocen como tareas en segundo plano o hilos secundarios. De esta forma se ejecutan varios procesos a la vez y en caso de que uno de ellos pueda llegar a bloquearse, no tiene por qué afectar a los demás procesos. tiempo proceso más largo 30 s Hilo principal Hilo 1 Hilo 2 Hilo 3 Hilo 4 5 s 30 s 15 s 20 s

3 Para realizar tareas en segundo plano, el sistema Android proporciona principalmente dos alternativas: Crear directamente un nuevo hilo para ejecutar las tareas mediante las clases Thread y Handler que proporciona java (java.lang.thread) Utilizar la clase auxiliar AsyncTask de Android (android.os.asynctask<params, Progress, Result>) El problema que aparece al trabajar con hilos secundarios es que no se puede hacer referencia directa a componentes del hilo principal desde los hilos secundarios. Por ejemplo no podríamos actualizar el valor de un TextView del hilo principal desde el hilo secundario. Pero existen varias alternativas para solucionarlo en función del tipo de hilo, entre ellas el uso de Handler o runonuithread() en Threads, o el uso publishprogress() y onprogressupdate() en AsynTask. Las recomendaciones de uso de Threads o AsynTask, son entre otras: Thread: Operaciones de red que requieran de moderada a gran cantidad de datos, como descargas y subidas de datos Tareas que requieran un alto uso de la CPU Tareas en que sea necesario controlar el uso de la CPU respecto al hilo principal Necesita el uso de Handlers para comunicarse con el hilo principal (UI Thread) AsyncTask: Operaciones simples de red que no requieran gran cantidad de datos Tareas sobre disco que requieran pocos milisegundos Facilita la comunicación con el hilo principal y no es necesario el uso de Handlers. Utiliza más tiempo de CPU que Thread Thread La clase Thread es la clase que proporciona java (java.lang.thread) que nos permite ejecutar hilos secundarios. Los hilos no comparten información con la GUI principal directamente, y es necesario utilizar intermediarios. Para ello podemos utilizar varias alternativas, como el uso de objetos Handler o el método runonuithread(), que se encargarán de compartir la información con el hilo principal. Una de las métodos más rápidos es utilizar la interfície runnable(), que implementará el método run(), y dentro del método se ejecutará el código correspondiente a la comunicación entre el Thread secundario y el hilo principal. Como alternativa se puede utilizar el objeto Handler, y utilizar su método post() donde mediante la interfície Runnable() también puede comunicarse con el hilo principal.

4 Una vez creado el Thread, se ha de activar mediante el método start(). El siguiente ejemplo crea un Thread en el método oncreate() de la actividad, y modifica el texto de dos TextView, uno mediante Handler.post() y otro mediante runonuithread(). public class MainActivity extends AppCompatActivity { TextView mensajepost, mensajeonui; Handler mensajehandler=new Handler(); String msgstring; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mensajepost=(textview) findviewbyid(r.id.textview); mensajeonui=(textview) findviewbyid(r.id.textview2); new Thread(new Runnable() { msgstring="mensaje del Thread a través de "; mensajehandler.post(new Runnable() { mensajepost.settext(msgstring+"post"); ); runonuithread(new Runnable() { mensajeonui.settext(msgstring+"runonuithread"); ); ).start(); Para una mejor organización disminuyendo el código insertado en oncreate(), es aconsejable crear el Thread como una nueva clase extensión de Thread y después en oncreate() crear un objeto de dicha clase. public class MainActivity extends AppCompatActivity { TextView mensajepost, mensajeonui; String msgstring; Handler mensajehandler=new Handler(); Hilosecundario hilo; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate);

5 setcontentview(r.layout.activity_main); mensajepost=(textview) findviewbyid(r.id.textview); mensajeonui=(textview) findviewbyid(r.id.textview2); hilo=new Hilosecundario(); hilo.start(); private class Hilosecundario extends Thread{ msgstring="mensaje del Thread a través de "; mensajehandler.post(new Runnable() { mensajepost.settext(msgstring+"post"); ); runonuithread(new Runnable() { mensajeonui.settext(msgstring+"runonuithread"); ); Otro ejemplo en que continuamente está ejecutándose de cálculo de rotación y este se aplica a dos TextView public class MainActivity extends AppCompatActivity { TextView mensajepost, mensajeonui; float rotacion=0; Handler mensajehandler=new Handler(); Hilorotacion hilo; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); mensajepost=(textview) findviewbyid(r.id.textview); mensajeonui=(textview) findviewbyid(r.id.textview2); hilo=new Hilorotacion(); hilo.start(); private class Hilorotacion extends Thread{ while(true){ try{ Thread.sleep(1000); catch (InterruptedException e){ rotacion=rotacion+45; if (rotacion==360) {rotacion=0; mensajehandler.post(new Runnable() { mensajepost.settext("post Rotacion:" +Float.toString(rotacion)); mensajepost.setrotation(rotacion); ); runonuithread(new Runnable() {

6 ); mensajeonui.settext("runonuithread Rotacion: " +Float.toString(360-rotacion)); mensajeonui.setrotation(360-rotacion); Para no tener que utilizar la interfície Runnable() se pueden utilizar los mensajes del objeto Handler, mediante los cuales el hilo principal puede decidir qué hacer con ellos. Habiendo creado un Handler, en el Thread se envía un mensaje mediante el método obtainmessage() y sendtotarget() del Handler. En él se envía quien ha enviado el mensaje y el mensaje: Handler.obtainMessage(int what, Object obj).sendtotarget(); Aunque también se pueden enviar dos argumentos más de forma opcional Handler.obtainMessage(int what, int arg1, int arg2, Object obj).sendtotarget(); En el hilo principal se inicia el Thread, y se crea el Handler. En el Handle se añade el método handlemessage(msg) con el que se gestionarán los mensajes recibidos del Thread, utilizando los argumentos enviados por el Thread. import android.os.message; public class MainActivity extends AppCompatActivity { TextView txt1,txt2; Handler intermediario; private Hilosecundario Hilomsg; final int mensaje1=1; final int mensaje2=2; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); txt1=(textview) findviewbyid(r.id.textview); txt2=(textview) findviewbyid(r.id.textview2); Hilomsg = new Hilosecundario(); Hilomsg.start(); intermediario = new Handler(){ public void handlemessage (Message msg){ if (msg.what==mensaje1){ String leemsg1 = (String) msg.obj; txt1.settext(leemsg1); if (msg.what==mensaje2){ String leemsg2 = (String) msg.obj; txt2.settext(leemsg2); ;

7 private class Hilosecundario extends Thread{ int contador=0; String msg1="mensaje 1: "; String msg2="mensaje 2: "; while (true){ try{ intermediario.obtainmessage(mensaje1,msg1+integer.tostring(contador)).send ToTarget(); Thread.sleep(500); contador++; intermediario.obtainmessage(mensaje2,msg2+integer.tostring(contador)).send ToTarget(); Thread.sleep(500); contador++; catch (InterruptedException e){ break; Utilizar la clase Thread de Java puede ser un poco complejo de interpretar, aunque es el método recomendado para tratar gran cantidad de datos y para tareas complejas. En caso de necesitar tareas sencillas y con pocos datos, en Android podemos utilizar la clase AsyncTask. AsyncTask La clase AsyncTask que proporciona Android, permite realizar tareas e interactuar con el hilo principal igual que con Thread, pero de una forma más organizada y sin el uso de Handlers ni runonuithread(). Al crear una instancia de la clase AsyncTask se necesitan definir tres tipos de datos genéricos: Los tres tipos necesarios son: android.os.asynctask<params, Progress, Result> Parámetros (Params). El tipo de los parámetros que recibirá como entrada tarea en segundo plano en ejecución (doinbackground()) Progreso (Progress). El tipo utilizado durante la tarea en segundo plano para indicar el progreso que se recibirá como parámetro en el método onprogressupdate() y que se incluirá como parámetro en el método publishprogress() Resultado (Result). El tipo que se devolverá como resultado al finalizar la tarea, que será el tipo retornado por doinbackground() y recibido por onpostexecute() Si alguno de los tipos no son necesarios, se pueden definir del tipo Void: private class MyTask extends AsyncTask<Void, Void, Void> {...

8 La clase está organizada en diferentes métodos en función del estado de la tarea: onpreexecute(): Se ejecutará antes del código principal de la tarea y se utilizará normalmente para inicializar y preparar la ejecución de la tarea doinbackground(): Ejecuta el código principal de la tarea onprogressupdate(): Se ejecuta cada vez que llamemos al método publishprogress() desde el método doinbackground() onpostexecute(): Se ejecuta al finalizar la tarea, al finalizar el método doinbackground() oncancelled(): Se ejecutará al cancelar la ejecución de la tarea antes de la finalización normal private class TareaAsyncTask extends AsyncTask <Byte,Integer,Long> { protected void onpreexecute() { super.onpreexecute(); protected Long doinbackground(byte... params) { return null; protected void onprogressupdate(integer... values) { super.onprogressupdate(values); protected void onpostexecute(long along) { super.onpostexecute(along); protected void oncancelled(long along) { super.oncancelled(along); La siguiente figura expresa de forma gráfica la ejecución de una tarea con AsyncTask onpreexecute() onprogressupdate() onpostexecute() publishprogress() doinbackground() oncancelled() La tarea se inicia con el método AsyncTask.execute (), y se puede cancelar con AsyncTask.cancel ()

9 En el siguiente ejemplo se utilizará un AsynTask para incrementar un contador en el intervalo de tiempo indicado. En el layout se utilizarán un TextView para mostrar el valor, un EditText para introducir el valor del intervalo, un botón para iniciar la tarea y otro para cancelarla. Al pulsar el botón de inicio, si la tarea no está activa, se creará la tarea enviando el intervalo de tiempo cuando se ejecute mediante Tarea.execute(intervalo). Este intervalo lo recibirá la tarea AsyncTask mediante el tipo params. Al pulsar el botón de cancelar se cancela la ejecución y elimina la tarea, pero al indicar false en la cancelación (Tarea.cancel (false)), deja que finalice la ejecución del código. En la creación de la tarea se utilizarán todos los tipo (Params, Progress, Result). En el método onpreexecute() de inicializaciones se creará un String con la parte inicial del mensaje. En el código principal de la tarea de doinbackground(), realizará un retardo con el intervalo que envió el hilo principal al executar la tarea, recibido como parámetro. Creará el mensaje y enviará al método onprogressupdate() mediante publishprogress(). Al poder cancelarse la tarea, es necesario comprobar si se ha cancelado para no continuar la ejecución, ya que en caso se cancelar y continuar la ejecución aparecería un error. Finalmente envía el valor del contador al método oncancelled(). En onprogressupdate() recibe el valor del contador enviado por doinbackground(), mediante publishprogress(), y modifica el texto del hilo principal. En oncancelled() recibe el último valor del contador al finalizar doinbackground(), y muestra un Toast. El método onpostexecute() no realiza nada ya que al haber un bucle infinito en el código de doinbackground(), nunca dejará este de ejecutarse y onpostexecute() no ejecutará nunca ningún código. public class MainActivity extends AppCompatActivity { Button inicio,cancela; TextView texto; EditText retardo; Boolean tareaactiva=false; Integer contador=0; Integer espera; String mensaje; TareaSincrona Tarea; protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate);

10 setcontentview(r.layout.activity_main); inicio=(button) findviewbyid(r.id.iniciar); cancela=(button)findviewbyid(r.id.cancela); texto=(textview)findviewbyid(r.id.textview); retardo=(edittext)findviewbyid(r.id.retardoms); inicio.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { if (tareaactiva==false){ espera=integer.parseint(retardo.gettext().tostring()); Tarea=new TareaSincrona(); Tarea.execute(espera); tareaactiva=true; ); cancela.setonclicklistener(new View.OnClickListener() { public void onclick(view v) { if (tareaactiva==true){ Tarea.cancel(false); //false deja finalizar la tarea Tarea=null; tareaactiva=false; ); private class TareaSincrona extends AsyncTask <Integer,String, Integer>{ protected void onpreexecute() { mensaje="contador: "; protected Integer doinbackground(integer... params) { while (true){ SystemClock.sleep(params[0]); contador++; String msg=mensaje+integer.tostring(contador); publishprogress(msg); //Envia a onprogressupdate() if(iscancelled()) break; // NECESARIO si se cancela!!! return contador; //Envia a oncancelled() y onpostexecute() protected void onprogressupdate(string... values) { texto.settext(values[0]); //Recibe de doinbackground() protected void onpostexecute(integer integer) { //Como el código del método doinbackground contiene un bucle //infinito, no dejará de ejecutarse nunca de forma normal protected void oncancelled(integer integer) { String ultimocnt=integer.tostring(integer); //Recibe de doinbackground() Toast.makeText(MainActivity.this, "Tarea cancelada! Contador: "+ultimocnt,toast.length_long).show();

Concurrencia en Android LSUB, GYSC, URJC

Concurrencia en Android LSUB, GYSC, URJC Concurrencia en Android LSUB, GYSC, URJC Repaso de concurrencia en Java Crear un thread Instanciar un Thread, con el método run sobreescrito Intanciar un objeto que cumpla el interfaz Runnable y pasárselo

Más detalles

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura).

Ejecución de hebras. En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Ejecución de hebras En realidad, todas las aplicaciones escritas en Java son aplicaciones multihebra (recuerde el recolector de basura). Hebras vs. Procesos Los cambios de contexto son más costosos en

Más detalles

Hilos - Ejercicios. Índice

Hilos - Ejercicios. Índice Índice 1 Hilos parables y pausables... 2 2 (*) Grupos de hilos y prioridades... 3 3 Productor-consumidor... 4 4 (*) Descarga de imágenes con hilos y Looper... 4 5 Descarga de imágenes con Pool de hilos...5

Más detalles

Concurrencia en Android LSUB, GYSC, URJC

Concurrencia en Android LSUB, GYSC, URJC Concurrencia en Android LSUB, GYSC, URJC Repaso de concurrencia en Java Crear un thread Instanciar un Thread, con el método run sobreescrito Intanciar un objeto que cumpla el interfaz Runnable y pasárselo

Más detalles

Arquitecturas cliente/servidor

Arquitecturas cliente/servidor Arquitecturas cliente/servidor Creación de Sockets Cliente Servidor 1 Creación de Sockets Cliente/Servidor Sockets en TCP Concepto de Hilos Definición de DAEMON Sockets en UDP 2 THREADS 3 Qué es un thread?

Más detalles

Android TAG y el principio DRY

Android TAG y el principio DRY Android es una plataforma de desarrollo que empieza a tener el sobrenombre de INFINITA en cuanto a las cosas que se pueden hacer, conjunto de APIs soportadas etc. Sin embargo al ser tan grande muchas veces

Más detalles

Tema 6. Threads: programas multitarea

Tema 6. Threads: programas multitarea Tema 6. Threads: programas multitarea Procesos e hilos Creación de threads Ciclo de vida de un thread Sincronización Prioridades Grupos de threads Relación de métodos Ejemplo sincronización 1 Procesos

Más detalles

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; }

PROGRAMACIÓN EN JAVA. { una línea para definir, crear o ejecutar ; } PROGRAMACIÓN EN JAVA { una línea para definir, crear o ejecutar ; } JFC Y API SPECIFICATIONS OBJECT INTERFACE ABSTRACT IMPLEMENTS EXTENDS NEW EXTENDS (Hasta que una clase derivada deje de ser ABSTRACT)

Más detalles

Laboratorio I Java Threads (Silberschatz Galvin)

Laboratorio I Java Threads (Silberschatz Galvin) Laboratorio I Java Threads (Silberschatz Galvin) Un proceso es un programa ejecutandose dentro de su propio espacio de direcciones. Java es un sistema multiproceso, esto significa que soporta varios procesos

Más detalles

Desarrollo de Aplicaciones para Android

Desarrollo de Aplicaciones para Android Desarrollo de Aplicaciones para Android Sesión 7: Servicios de red Desarrollo de Aplicaciones para Android Depto. Ciencia de la Computación e IA Servicios de red-1 Puntos a tratar Conexiones HTTP Parsing

Más detalles

Que es un Android Intent?

Que es un Android Intent? Cuando uno empieza a programar para Android se suele topar mas pronto que tarde con el concepto de Intent y de repende comienzan a surgir muchas dudas. Si miramos en el diccionario la traducción es Intento

Más detalles

Guillermo Román Díez

Guillermo Román Díez Concurrencia Creación de Procesos en Java Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Creación de Procesos en Java 1/18 Concurrencia

Más detalles

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control

Normalmente, los programas son ejecutados de forma secuencial. Único flujo de control Hilos BUAP Introducción Normalmente, los programas son ejecutados de forma secuencial Único flujo de control Un programa con un único flujo de control, ejecuta sólo una tarea (hilo) Dr. Ivan Olmos 2 Introducción

Más detalles

Programación concurrente

Programación concurrente Programación concurrente Java y Servicios Web I Master en Ingeniería Matemática Manuel Montenegro Dpto. Sistemas Informáticos y Computación Desp. 467 (Mat) montenegro@fdi.ucm.es Programación concurrente

Más detalles

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución.

Threads o Hilos. Un thread en JAVA comienza como una instancia de java.lang.thread antes de convertirse en un hilo de ejecución. Threads o Hilos Los hilos son otra forma de crear la posibilidad de concurrencia de actividades; sin embargo, la gran diferencia es que los hilos comparten el código y el acceso a los datos. En cierta

Más detalles

Programación concurrente en Java

Programación concurrente en Java Diseño Y Aplicaciones de Sistemas Distribuidos Programación concurrente en Java Joan Vila DISCA / UPV Departament d Informàtica de Sistemes i Computadors Universitat Politècnica de València Threads en

Más detalles

Manejadores en Android LSUB, GYSC, URJC

Manejadores en Android LSUB, GYSC, URJC Manejadores en Android LSUB, GYSC, URJC Botones Vamos a hacer una aplicación con un grupo de botones Layout LinearLayout Orientación vertical Con dos grupos de botones de radio de orientación horizontal

Más detalles

Programación multimedia y dispositivos móviles. Servicios Web

Programación multimedia y dispositivos móviles. Servicios Web Programación multimedia y dispositivos móviles Servicios Web Qué es? Web Service Un web service o servicio web es una aplicación que vive en internet y que sirve para intercambiar datos entre aplicaciones.

Más detalles

Android avanzado. Sesión 5: Notificaciones. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles

Android avanzado. Sesión 5: Notificaciones. Experto en Desarrollo de Aplicaciones para Dispositivos Móviles Android avanzado Sesión 5: Notificaciones 2012-2013 Depto. Ciencia de la Computación e IA Puntos a tratar Notificaciones Toast Personalización Notificaciones de la Barra de Estado Configuración y uso Cuadros

Más detalles

Anexo. Control de errores

Anexo. Control de errores Anexo. Control de errores Tipos de errores Los errores en un programa o algoritmo se pueden clasificar de la siguiente manera Errores de compilación Los errores de compilación no permiten la ejecución

Más detalles

UPM Concurrencia en Java

UPM Concurrencia en Java UPM Concurrencia en Java Juan Antonio de la Puente DIT/UPM Hebras (threads) Una hebra es un objeto de una subclase de java.lang.thread o una implementación de la interfaz Runnable El código que ejecuta

Más detalles

2. Indica cuál de las siguientes afirmaciones es cierta:

2. Indica cuál de las siguientes afirmaciones es cierta: Nombre:. Indica cuál de las siguientes afirmaciones es cierta: El diseño de un programa procedural está guiado por la división en tareas a realizar, mientras que el diseño orientado a objetos está dirigido

Más detalles

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo

Tema 4. Control de flujo. Programación Programación - Tema 4: Control de Flujo Tema 4 Control de flujo Programación 2015-2016 Programación - Tema 4: Control de Flujo 1 Tema 4. Control de flujo Introducción. Estructuras condicionales. Estructuras de repetición. Programación - Tema

Más detalles

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos

Unidad Didáctica 3. Tipos genéricos. Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3 Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Definición de tipo genérico Hablamos de un tipo genérico cuando el tipo en cuestión depende

Más detalles

Tema 12: Programación multihilo

Tema 12: Programación multihilo Tema 12: Programación multihilo Antonio J. Sierra Índice 1. Modelo de hilo en Java. 2. El hilo principal. 3. Creación de un hilo. 4. Creación de múltiples hilos. Prioridades. 5. Comunicación entre hilos.

Más detalles

Programación concurrente Hebras

Programación concurrente Hebras 20151021 dit UPM Programación concurrente Hebras Juan Antonio de la Puente Algunos derechos reservados. Este documento se distribuye bajo licencia Crea9ve Commons Reconocimiento-NoComercial-Compar9rIgual

Más detalles

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo

Unidad IV: Programación concurrente (MultiHilos) 4.1. Concepto de hilo Unidad IV: Programación concurrente (MultiHilos) 4.1. 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

Más detalles

Ejercicios - Servicios

Ejercicios - Servicios Índice 1 Contador: Servicio con proceso en background (0.6 puntos)... 2 2 Broadcast Receiver: Captura de llamadas (0.6 puntos)...2 3 Broadcast Receiver: Reenvío de datos (0.6 puntos)...3 4 Arranque: Iniciar

Más detalles

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN BENEMERITA UNIVERSIDADD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACION CONCURRENTE PARALELA Y PRACTICA 3 (PARTE 1 Y 2) HILOS POSIX NOMBRE:

Más detalles

Android avanzado. Índice. Hilos Hilos de ejecución...3. Sincronización de hilos Hilos e interfaz de usuario Hilos - Ejercicios...

Android avanzado. Índice. Hilos Hilos de ejecución...3. Sincronización de hilos Hilos e interfaz de usuario Hilos - Ejercicios... Índice 1 2 3 4 5 6 Hilos... 3 1.1 Hilos de ejecución...3 1.2 Sincronización de hilos... 8 1.3 Hilos e interfaz de usuario... 15 Hilos - Ejercicios... 19 2.1 Hilos parables y pausables... 19 2.2 (*) Grupos

Más detalles

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I

Universidad Autónoma de Baja California Facultad de Ingeniería Apuntes de Programación Orientada a Objetos I Hilos Universidad Autónoma de Baja California Hasta el momento los programas que se han estado manejando en el curso han sido secuenciales. Esto es, inician en un punto y continuan su ejecución de manera

Más detalles

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas

Programación concurrente en Java. Breve introducción. Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas Programación concurrente en Java. Breve introducción Miguel Ángel LATRE Dept. de Informática e Ingeniería de Sistemas Concurrencia en Java Hilos de ejecución Clase Thread e interfaz Runnable Pausas Interrupciones

Más detalles

TP Nº4 Android - SQLite Fecha Miércoles 2013/08/14 Profesor: Pablo Ulman (Polshu).

TP Nº4 Android - SQLite Fecha Miércoles 2013/08/14 Profesor: Pablo Ulman (Polshu). BASES DE DATOS EN ANDROID Bases de datos SQLite SQLite es una base de datos Open Source que se encuentra embebida en Android Las Bases de datos que se crean son accesibles por nombre desde cualquier clase

Más detalles

Sebastián García Galán

Sebastián García Galán Universidad de Jaén E.U.P. Linares Dpto. Telecomunicaciones Área de Ingeniería Telemática Sebastián García Galán sgalan@ujaen.es Variables y tipos de datos Operaciones y operadores Clases y objetos Tipos

Más detalles

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN

Examen parcial Convocatoria de junio de 2005 FUNDAMENTOS DE LA PROGRAMACIÓN EJERCICIO 1 (1.5 puntos) Diseñe un conjunto de casos de prueba adecuado para comprobar el funcionamiento de un método encargado de calcular la duración de una llamada telefónica. Entradas Hora de inicio

Más detalles

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE

ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE SQLite M.Sc. Reynaldo Zeballos ALMACENAMIENTOS DE DATOS EN ANDROID CON SQLITE En este ejercicio vamos a crear una tabla TELEFONOS para la base de datos GUIATEL. Para lo cual utilizaremos SQLite que viene

Más detalles

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; }

Ejemplo. class SiNoThread extends Thread { private String SiNo; static int Contador = 0; public SiNoThread(String s) { super(); SiNo = s; } Qué son los threads? Todos los programadores conocen lo que es un proceso, la mayoría diría que es un programa en ejecución: tiene un principio, una secuencia de instrucciones y tiene un final. Un thread

Más detalles

Servicios - Ejercicios

Servicios - Ejercicios Índice 1 Servicio con proceso en background. Contador...2 2 Dialer. Iniciar una actividad con un evento broadcast (*)...2 3 Arranque. Iniciar servicio con evento broadcast... 3 4 Localizador de móvil desaparecido...4

Más detalles

Notificaciones y AppWidgets - Ejercicios

Notificaciones y AppWidgets - Ejercicios Notificaciones y AppWidgets - Ejercicios Índice 1 Servicio con notificaciones: Números primos...2 2 IP AppWidget...3 3 StackWidget (*)...5 1. Servicio con notificaciones: Números primos El proyecto android-av-notificaciones

Más detalles

Servicios LSUB, GYSC, URJC

Servicios LSUB, GYSC, URJC Servicios LSUB, GYSC, URJC Servicios Sirve para hace trabajo en background (i.e. sin UI). Más prioridad que activity (no suelen matarlo) Pueden ser privados a la aplicación (manifest) Continua ejecutando

Más detalles

Servicios Web Android

Servicios Web Android Índice 1 Introducción...2 2 Ejercicios... 2 2.1 Listado de libros a partir de servicios web (0,5 puntos)... 2 2.2 Obteniendo las portadas de los libros (0,5 puntos)...3 2.3 Añadir un libro (0,5 puntos)...5

Más detalles

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs.

Variables. Una variable no es más que un nombre simbólico que identifica una dirección de memoria: vs. Variables Una variable no es más que un nombre simbólico que identifica una dirección de memoria: Suma el contenido de la posición 3001 y la 3002 y lo almacenas en la posición 3003 vs. total = cantidad1

Más detalles

Ejercicio 3. Manejo de la Vista y Eventos en Android Ejercicio 3 Curso de Android con Java Derechos Res Dere e c rvados hos Res Gl e obal rva

Ejercicio 3. Manejo de la Vista y Eventos en Android Ejercicio 3 Curso de Android con Java Derechos Res Dere e c rvados hos Res Gl e obal rva Android Con Java Ejercicio 3 Manejo de la Vista y Eventos en Android Objetivo del Ejercicio El objetivo del ejercicio es entender cómo controlar la Vista desde código Java, así como responder a eventos

Más detalles

Práctica 3. Android. Tutorial appfotovoz

Práctica 3. Android. Tutorial appfotovoz Práctica 3. Android. Tutorial appfotovoz José Antonio Larrubia García José Miguel Navarro Moreno Índice: 1.- Introducción. 2.- Descripción de la solución y problemas encontrados. 3.- Manual de uso. 4.-

Más detalles

Estructuras de control selectivas

Estructuras de control selectivas Práctica 3 Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 2.0.2 Concepto de sentencia y estructura de control El cuerpo de los métodos

Más detalles

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles Android avanzado

Experto en Desarrollo de Aplicaciones para Dispositivos Móviles Android avanzado Android avanzado Sesión 3: Servicios 2012-2013 Depto. Ciencia de la Computación e IA Puntos a tratar Servicios propios Ciclo de vida Iniciar tras el arranque Servicios y AsyncTask Broadcast Receiver Pending

Más detalles

Ejercicio 16. Mejora de Notificaciones en Android. Android Con Java. Ejercicio 16. Mejora de Notificaciones en Android. Curso de Android con Java

Ejercicio 16. Mejora de Notificaciones en Android. Android Con Java. Ejercicio 16. Mejora de Notificaciones en Android. Curso de Android con Java Android Con Java Ejercicio 16 Mejora de Notificaciones en Android Objetivo del Ejercicio El objetivo del ejercicio es entender y utilizar algunas de las nuevas clases para mejorar el manejo de Notificaciones

Más detalles

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN

BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN BENEMERITA UNIVERSIDAD AUTONOMA DE PUEBLA FACULTAD DE CIENCIAS DE LA COMPUTACIÓN LICENCIATURA EN CIENCIAS DE LA COMPUTACIÓN PROGRAMACIÓN CONCURRENTE Y PARALELA PRACTICA 8 MONITORES BASADOS EN SEMÁFOROS

Más detalles

CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web

CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web CODIGO PROYECTO: AppPixelproServicioWeb Proyecto Android - Servicio Web I. Alcances del Proyecto a. Ide Eclipse Indigo 3.7 b. Api 10-17, Versión Android 2.3.3 A 4.2.2 c. Jdk 1.6 II. Conceptos Relacionados

Más detalles

Introducción a los Threads Java

Introducción a los Threads Java 75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2014 Facultad de Ingeniería Universidad de Buenos Aires Introducción a los Threads Java Para crear un nuevo Thread Se extiende la clase

Más detalles

MANIPULACIÓN DE VISTAS (VIEW)

MANIPULACIÓN DE VISTAS (VIEW) MANIPULACIÓN DE VISTAS (VIEW) Unidad III.- Desarrollo de la interfaz de usuario. Desarrollo de aplicaciones III Alfonso Felipe Lima Cortés www.afelipelc.mx View Provides classes that expose basic user

Más detalles

UNIDAD III.- Programación Concurrente

UNIDAD III.- Programación Concurrente UNIDAD III.- Programación Concurrente Sincronización Todo thread tiene una prioridad. Un thread hereda su prioridad, cuyo valor está entre 1 y 10 La prioridad puede modificarse con los métodos: setpriority()

Más detalles

Construcciones del Lenguaje Java

Construcciones del Lenguaje Java Construcciones del Lenguaje Java Autor: Juan Alberto López Cavallotti Versión de Java: 5 / 6 Comentarios Comentario de Línea Comentario Multilínea //Esto es un comentario. /* Esto comenta varias lineas.

Más detalles

Importar y exportar aplicaciones Para importar proyectos de Android a Android studio

Importar y exportar aplicaciones Para importar proyectos de Android a Android studio Importar y exportar aplicaciones Para importar proyectos de Android a Android studio Buscar la aplicación en el repositorio: Github, Bitbucket, GoogleCode, etc. Importar en Android Studio Corregir errores

Más detalles

Tema 2.- Objetos y mensajes

Tema 2.- Objetos y mensajes Tema 2.- Objetos y mensajes 1. Objetos y mensajes: mecanismo de envío de mensajes...2 2. SMALLTALK: EXPRESIONES...3 2.1. LITERALES: designan objetos constantes...3 2.2. NOMBRES DE VARIABLES: identifican

Más detalles

Colas. 5.1 Implementación

Colas. 5.1 Implementación Capítulo 5 Colas Las colas al igual que las pilas son un tipo especial de listas en las cuales los elementos se insertan por un lado y se eliminan por el otro. Es decir se sacan en el mismo orden en que

Más detalles

import java.applet.*; import java.awt.*; import java.awt.event.*;

import java.applet.*; import java.awt.*; import java.awt.event.*; /* Conway s Game Of Life (in Spanish) Juego de la Vida v. 0.1 implementacion de Henrik Mitsch (henx@bigfoot.com) probablemente online en http://henx.home.dhs. org/juegodelavida.html */ import java.applet.*;

Más detalles

EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado

EXCLUSIÓN MUTUA ENTRE HILOS. TEMA 5: Control de la Concurrencia en Java (API Estándar) Sintaxis para Bloques de Código Sincronizado TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos

Más detalles

TEMA 5: Control de la Concurrencia en Java (API Estándar)

TEMA 5: Control de la Concurrencia en Java (API Estándar) TEMA 5: Control de la Concurrencia en Java (API Estándar) CONTENIDO Exclusión Mutua con código synchronized. Exclusión Mutua con métodos synchronized. Protocolos de Control de la Exclusión Mutua. Interbloqueos

Más detalles

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente.

HERENCIA (2ª parte) En Java todas las clases derivan de otra, aunque no se diga explícitamente. HERENCIA (2ª parte) Lenguajes de Programación - Orientación a Objetos: Herencia 2ª parte 1 Object En Java todas las clases derivan de otra, aunque no se diga explícitamente. Object: Es el nombre de la

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 10/02/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Cómo podemos compilar desde la línea de comandos la clase Java A que utiliza una librería empaquetada bd.jar? 2. Indica si es correcto el siguiente código. Justifica

Más detalles

Concurrencia Monitores. Guillermo Román Díez

Concurrencia Monitores. Guillermo Román Díez Concurrencia Monitores Guillermo Román Díez groman@fi.upm.es Universidad Politécnica de Madrid Curso 2016-2017 Guillermo Román, UPM CC: Monitores 1/25 Recursos Compartidos Pregunta La especificación de

Más detalles

Ejercicios - Menús, listas y barras de progreso

Ejercicios - Menús, listas y barras de progreso Ejercicios - Menús, listas y barras de progreso Índice 1 Barra de progreso lineal (0.5 puntos)... 2 2 Selección de color (0.5 puntos)... 3 3 Lista de tareas (0.5 puntos)...4 4 Modificando el aspecto de

Más detalles

Sincronización por Colas en en Java

Sincronización por Colas en en Java 75-62 Técnicas de Programación Concurrentes II Lic. Ing. Osvaldo Clúa 2013 Facultad de Ingeniería Universidad de Buenos Aires Sincronización por Colas en en Java Interface Collection Una interface

Más detalles

Multitarea en Java. Rafa Caballero - UCM

Multitarea en Java. Rafa Caballero - UCM Multitarea en Java Rafa Caballero - UCM Programa Monoproceso (monotarea) En cada momento hay una única instrucción ejecutándose Se dice que el programa es monotarea, o monoproceso o monohebra (o single

Más detalles

Java Threads. Sistemas Distribuidos Rodrigo Santamaría

Java Threads. Sistemas Distribuidos Rodrigo Santamaría Java Threads Sistemas Distribuidos Rodrigo Santamaría Java Threads Hilos Sincronización Ejercicios FAQ 2 3 Hilos Un hilo (Thread) es un proceso en ejecución dentro de un programa java main Thread t t.start()

Más detalles

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones

Unidad Didáctica 2. Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Unidad Didáctica 2 Elementos básicos del lenguaje Java Tipos, declaraciones, expresiones y asignaciones Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.3 Índice

Más detalles

Diseño de tipos Igualdad, representación, código, copia y relación de orden

Diseño de tipos Igualdad, representación, código, copia y relación de orden Práctica 4 Diseño de tipos Igualdad, representación, código, copia y relación de orden Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión 1.0.1 Índice Gestión de excepciones

Más detalles

Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java

Ejercicio 20. SQLite en Android. Android Con Java. Ejercicio 20. Uso de SQLite en Android. Curso de Android con Java Android Con Java Ejercicio 20 Uso de SQLite en Android Objetivo del Ejercicio El objetivo del ejercicio poner en práctica el concepto de SQLite en Android. Al finalizar el ejercicio deberemos poder acceder

Más detalles

INTRODUCCIÓN. paco@portadaalta.es

INTRODUCCIÓN. paco@portadaalta.es INTRODUCCIÓN paco@portadaalta.es Índice Entorno de desarrollo Estructura de un proyecto Android Componentes de una aplicación Android Ejemplos: Mi primera aplicación Divisas 2 actividades Contador de cafés

Más detalles

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos

Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos Algoritmos y Estructuras de Datos Tema 2: Diseño de Algoritmos 1! 1. Algoritmos recursivos " 1.1 Algoritmos recursivos. Recursión simple " 1.2 Algoritmos con vuelta atrás y ejemplos! 2. Complejidad de

Más detalles

1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS

1. Fundamentos. Existen dos tipos distintos de multitarea: BASADA EN PROCESOS Hilos 1. Fundamentos. Los procesadores y los Sistemas Operativos modernos permiten la multitarea, es decir, la realización simultánea de dos o más actividades. En la realidad, un ordenador con una sola

Más detalles

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta Centro Asociado Palma de Mallorca Introducción Práctica de Programación Java Antonio Rivero Cuesta Sesión III La Sintaxis de Java II... 6 Estructuras de Control... 7 Estructuras de Selección... 8 Sentencia

Más detalles

Programación orientada a objetos III

Programación orientada a objetos III Ingeniería en Desarrollo de software Semestre 05 Asignatura: Programación orientada a objetos III Clave: 16142524 Universidad Abierta y a Distancia de México 1 Índice PRESENTACIÓN DE LA UNIDAD... 3 PROPÓSITOS

Más detalles

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2007.

FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2007. Dpto. Ingeniería de Sistemas Telemáticos Universidad Politécnica de Madrid ETSI Telecomunicación, Ciudad Universitaria, 28040 Madrid FUNDAMENTOS DE PROGRAMACIÓN. SEPTIEMBRE 2007. Normas de examen: Con

Más detalles

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación:

PROGRAMACIÓN ORIENTADA A OBJETOS 1/7/2009. Examen de Java. Nombre: DNI: Titulación: Examen de Java Nombre: DNI: Titulación: 1. Sea una aplicación Java donde todas las clases están compiladas y empaquetas en un solo fichero JAR (programa.jar). Qué sería necesario para conseguir ejecutar

Más detalles

Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java

Ejercicio 4. Manejo de Layouts en Android. Android Con Java. Ejercicio 4. Manejo de Layouts en Android. Curso de Android con Java Android Con Java Ejercicio 4 Manejo de Layouts en Android Objetivo del Ejercicio El objetivo del ejercicio es entender el manejo de Layout y los Adaptadores en Android. Al finalizar deberemos observar

Más detalles

Unidad V. Ya veremos qué poner en "algunas_palabras" y "algo_más", por ahora sigamos un poco más.

Unidad V. Ya veremos qué poner en algunas_palabras y algo_más, por ahora sigamos un poco más. Implementación Orientada a Objetos. Unidad V 5.1 Estructura de una clase. Una clase consiste en: algunas_palabras class nombre_de_la_clase [algo_más] { [lista_de_atributos] [lista_de_métodos] Lo que está

Más detalles

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia

Programación orientada a objetos. Resumen de Temas Unidad 5: Herencia Programación orientada a objetos Resumen de Temas Unidad 5: Herencia 5.1 Introducción a la Herencia La herencia es el mecanismo fundamental de relación entre clases en la orientación a objetos. Relaciona

Más detalles

Natalia Partera Jaime Alumna colaboradora de la asignatura

Natalia Partera Jaime Alumna colaboradora de la asignatura Programación Concurrente y de Tiempo Real Guión de prácticas 6: Programación en Java de algoritmos de control de la Exclusión Mutua con variables comunes Natalia Partera Jaime Alumna colaboradora de la

Más detalles

UPM Tareas de tiempo real en RT Java

UPM Tareas de tiempo real en RT Java UPM Tareas de tiempo real en RT Java Juan Antonio de la Puente DIT/UPM Modelo básico Objetos planificables (schedulable objects) implementan la interfaz Schedulable dos clases: RealTimeThread y AsynchronousEventHandler

Más detalles

Estructura de Datos Unidad 1: Repaso del Lenguaje Java

Estructura de Datos Unidad 1: Repaso del Lenguaje Java Estructura de Datos Unidad 1: Repaso del Lenguaje Java Introducción Java es un lenguaje de programación orientado a objetos, desarrollado por Sun Microsystems a principios de 1991, con el que se van a

Más detalles

Tema 2: Aplicaciones Multihilo, Cliente Servidor

Tema 2: Aplicaciones Multihilo, Cliente Servidor Servidores Multiproceso PID=1 atiende A Tema 2: Aplicaciones Multihilo, Cliente Servidor 1 t=1. A puja t=1. B puja Multiples Clientes Concurrente Web Main () for (;;) Web new_connection = accept (i, NULL,

Más detalles

Programación Orientada a Eventos

Programación Orientada a Eventos Programación Orientada a Eventos Técnicas de Programación Santiago Pavón V:2012.03.13 Programas Secuénciales El flujo de ejecución del programa sigue la secuencia de sentencias que lo forman. El estado

Más detalles

Procesamiento paralelo con hilos de Java

Procesamiento paralelo con hilos de Java Procesamiento paralelo con hilos de Java Tabla de contenidos 1. Soporte para hilos en Java... 1 2. Creación y control de un hilo... 2 2.1. Métodos de creación de un hilo... 2 2.2. Control de hilos mediante

Más detalles

Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13

Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13 Tema III. Multihilo Desarrollo de Aplicaciones para Internet Curso 12 13 Índice 1.Introducción 2.Tipos de Concurrencia 3.Hilos en Java 4.Implementación de un SNB i. Sin Hilos ii. Con Hilos iii.con Pool

Más detalles

Ingeniería del Software Separación entre Presentación y Lógica del Negocio

Ingeniería del Software Separación entre Presentación y Lógica del Negocio Introducción En este laboratorio desarrollaremos una aplicación que verifica si una cuenta y un password son correctos. En dicha aplicación la presentación y la lógica del negocio se definirán en dos capas

Más detalles

Programando para Android: una sencilla aplicación

Programando para Android: una sencilla aplicación Programando para Android: una sencilla aplicación Java, Android, Apps Vamos a hablar sobre como programar una aplicación para un dispositivo con Android que se va a tratar de una sencilla calculadora.

Más detalles

Tema 2: Programación basada en Objetos

Tema 2: Programación basada en Objetos Tema 2: Programación basada en Objetos Programación Orientada a Objetos Marcos López Sanz Máster en Informática Gráfica, Juegos y Realidad Virtual Índice Objetivos Introducción Vista Pública Clases Objetos

Más detalles

PRACTICAS DE ANDROID 12 - Lanzar un segundo "Activity" y pasar parámetros Problema:

PRACTICAS DE ANDROID 12 - Lanzar un segundo Activity y pasar parámetros Problema: PRACTICAS DE ANDROID 12 - Lanzar un segundo "Activity" y pasar parámetros Hemos visto en el concepto anterior que un programa puede tener más de una ventana representando cada ventana con una clase que

Más detalles

Scala Actors Tutorial Breve

Scala Actors Tutorial Breve Scala Actors Tutorial Breve Author: Philipp Haller Spanish version: Juanjo Bazán (jjbazan.at. gmail.dot. com) Date: May 24, 2007 Introducción Con la llegada de los procesadores multi-core, la programación

Más detalles

CAPÍTULO 3. PROCESOS VS. HILOS

CAPÍTULO 3. PROCESOS VS. HILOS CAPÍTULO 3. PROCESOS VS. HILOS 3.1 Primitivas de sincronización en Java Java no tiene semáforos como primitivas de sincronización. Sin embargo, proporciona otras primitivas diferentes con las cuales sí

Más detalles

Servlet 3.0 (II) Servlets Asincronos

Servlet 3.0 (II) Servlets Asincronos En el articulo anterior hemos usado las anotaciones de Servlets 3.0 para dar de alta un servlet sin tener la necesidad de hacer uso del web.xml.en este articulo introduciremos el concepto de servlet asincrono.

Más detalles

Ejercicio 18. Configuración de Widgets en Android. Android Con Java. Ejercicio 18. Configuración de Widgets en Android. Curso de Android con Java

Ejercicio 18. Configuración de Widgets en Android. Android Con Java. Ejercicio 18. Configuración de Widgets en Android. Curso de Android con Java Android Con Java Ejercicio 18 Configuración de Widgets en Android Objetivo del Ejercicio El objetivo del ejercicio crear un Widget que antes de utilizarlo nos permita configurarlo. En este caso, solicitar

Más detalles

Android y Recursos. Android R.java (fichero)

Android y Recursos. Android R.java (fichero) Cuando uno empieza a desarrollar en Android una de las mayores dudas con las que se encuentra es como funciona el fichero R.java que es generado automaticamente por el compilador. Android y Recursos Para

Más detalles

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar

MONITORES EN JAVA. Antonio Tomeu Control de la Concurrencia en Java: API Estándar MONITORES EN JAVA Un monitor es un objeto que implementa acceso bajo e.m. a todos sus métodos, y provee sincronización En Java, son objetos de una clase cuyos métodos públicos son todos synchronized Un

Más detalles

ELO330: Programación de Sistemas: Certamen Final 8/11/2006 Certamen Final 100 minutos. Puede usar Apuntes. Todas las preguntas tienen igual puntaje.

ELO330: Programación de Sistemas: Certamen Final 8/11/2006 Certamen Final 100 minutos. Puede usar Apuntes. Todas las preguntas tienen igual puntaje. Certamen Final 100 minutos. Puede usar Apuntes. Todas las preguntas tienen igual puntaje. 1.- Para el programa listado al final, qué valor se obtiene por pantalla cuando es ejecutado, en los siguientes

Más detalles

Parte I: Programación en un lenguaje orientado a objetos

Parte I: Programación en un lenguaje orientado a objetos Parte I: Programación en un lenguaje orientado a objetos 1. Introducción a los lenguajes de programación 2. Datos y expresiones 3. Estructuras algorítmicas 4. Datos compuestos 5. Modularidad 6. Tratamiento

Más detalles

dit UPM Tema 2: Concurrencia /threads (java) Análisis y diseño de software José A. Mañas

dit UPM Tema 2: Concurrencia /threads (java) Análisis y diseño de software José A. Mañas Análisis y diseño de software dit UPM Tema 2: Concurrencia /threads (java) José A. Mañas 11.3.2018 referencias The Java tutorials: Concurrency Oracle Java Threads Scott Oaks & Henry Wong O'Reilly Media;

Más detalles

Patricio Olivares. 25 de abril de 2017

Patricio Olivares. 25 de abril de 2017 : : Entorno 25 de abril de 2017 Table of contents : : Entorno 1 2 3 : 4 : Entorno 5 6 La telefonía móvil ha cambiado radicalmente la forma en que nos comunicamos. Con el creciente uso de los smartphones,

Más detalles