Revista UCB

Page 6

TEMAS DE INGENIERIA DE SISTEMAS C- • isInterrupted( ) • yield() • stop(), suspend(), resume() (deprecated) Métodos estáticos • sleep(milisegundos) • currentTread( ) Métodos de la clase Object que controlan la suspensión de threads • wait(), wait(milisegundos), notify(), notifyAll() n Creación de Threads: class MiThread extends Thread {...} => new MiThread() class MiThread implements Runnable {...} => new Thread(new MiThread())8 import java.lang.Math ; class EjemploThread extends Thread { int numero; EjemploThread (int n) { numero = n; } public void run() { try { while (true) { System.out.println (numero); sleep((long)(1000*Math.random())); } } catch (InterruptedException e) { return; } // acaba este thread } public static void main (String args[]) { for (int i=0; i<10; i++) new EjemploThread(i).start(); } } import java.lang.Math ; class EjemploThread extends Thread { int numero; EjemploThread (int n) { numero = n; } public void run() { try { while (true) { System.out.println (numero); sleep((long)(1000*Math.random())); } } catch (InterruptedException e) { return; } // acaba este thread } public static void main (String args[]) {

for (int i=0; i<10; i++) new EjemploThread(i).start(); } } Necesaria para evitar colisiones entre hilos de ejecución. Por ejemplo, accesos a memoria o a un recurso a la vez Sincronización: synchronized método (...) {...} // a nivel de objeto synchronized (objeto) { ... } // a nivel de bloque de código Métodos wait() y wait(timeout) El thread se queda bloqueado hasta que algún otro le mande una señal (notify) y entonces pasa a la cola de listos para ejecutar notify() y notifyAll( ) • ? No es fácil la correcta programación de la concurrencia y la sincronización9 public class NoSincronizada extends Thread { static int n = 1; public void run() { for (int i = 0; i < 10; i++) { System.out.println(n); n++; } } public static void main(String args[]) { Thread thr1 = new NoSincronizada(); Thread thr2 = new NoSincronizada(); thr1.start(); thr2.start(); } } XXIV. PROGRAMACIÓN DINÁMICA Se emplea típicamente para resolver problemas de optimización y permite resolver problemas mediante una secuencia de decisiones. Esta rama de la programación es muy útil para resolver problemas de maximización y minimización.

Universidad Católica Boliviana San Pablo 6


Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.