Suscribirse al Feed
20Dic

[código] Problema Productor-Consumidor: sincronización de Hilos en Java (1)

La entrada anterior de programación multihilo (o concurrente), contenía un ejemplo en el que se programaban hilos (o threads) que se ejecutaban independientemente. Sin embargo, existen muchas situaciones interesantes donde ejecutar threads concurrentes que compartan datos y deban considerar el estado y actividad de otros threads. Este conjunto de situaciones de programación son conocidos como escenarios 'productor/consumidor'; donde el productor genera un canal de datos que es consumido por el consumidor.

Algunos lenguajes de programación, como Java, proporcionan una característica al trabajar con threads: la sincronización; esto permite, valga la redundancia, sincronizar los procesos para que trabajen de manera correcta.

En esta primera entrada veremos un ejemplo de Productor-Consumidor, en el que NO se utiliza la sincronización, con el fin de entender mejor los problemas que se presentan cuando los subprocesos “no se ponen de acuerdo”.

Ejemplo del algoritmo Productor-Consumidor SIN sincronización

En nuestro ejemplo, Productor y Consumidor comparten un Bufer; Productor escribe un dato en el Bufer, mientras que Consumidor lee un dato del Bufer.

Lo primero a implementar en este ejemplo es la interfaz Bufer.java, que contienen dos métodos: establecer(int), que es usada por el Productor para asignar un valor a Bufer; y obtener(), usada por el Consumidor para obtener el valor de Bufer: Leer el resto de la entrada...

19Dic

[código] Ejemplo simple de Subprocesamiento múltiple en Java

En esta entrada veremos un ejemplo muy sencillo en Java en donde usamos el subprocesamiento múltiple (programación multihilo, o concurrente, o como le quieran llamar). En el ejemplo se usa la clase Thread para dormir un subproceso (usando el método sleep), y se muestran otras características relevantes cuando se programan hilos.

Varios subprocesos imprimiendo en distintos intervalos

Leer el resto de la entrada...

18Dic

¿Qué distribución de Linux elijo? ¿Cual sugiero a mis amigos?

Indeciso(Actualizado: 18 de Diciembre de 2007) Si bien, la gente al fin está entendiendo las bondades que el software libre ofrece, y que con un sistema GNU/Linux puede realizar cualquier tarea... resumiendo: que no se necesita Windows para vivir; la pregunta típica que se hace una persona cuando quiere dar sus primeros pasos es ¿de todas las que hay, qué distribución escojo?

Y la pregunta a primera vista parece simple, pero no hay que tomarsela a la ligera. Tengamos en cuenta que de la distribución que escojamos depende si:

  • Nos volvemos amantes del software libre y del pingüino, o
  • Si por el contrario mandamos a la m!3da a Linux (o intentamos suicidarnos)

Por ello, es importante ante todo conocer qué tipo de distros existen, qué tanto sé (en cuanto a sistemas operativos, programación, software, etc.) y qué es lo que necesito/busco. Y no solo los que se van a iniciar en Linux deben conocer esto, sino los "profetas" que ya lo usan y necesitan aconsejar a sus amigos.

Por esto es impresindible que conozcamos las principales distribuciones de GNU/Linux antes de elegir, sugerir o criticar (en ordén alfabetico para que no piensen que hay preferencias, aunque las haya):

  • CentOS: (acrónimo de Community ENTerprise Operating System) es un clon a nivel binario de la distribución Red Hat Enterprise Linux, compilado por voluntarios a partir del código fuente liberado por Red Hat, empresa desarrolladora de RHEL.
  • Damn Small Linux: es una distribución Linux LiveCD funcional y completa, basada en Knoppix pensada para funcionar en ordenadores con muy pocos recursos o antiguos. Su tamaño reducido (50MB) consigue mantener la esencia de Knoppix en un completo entorno de escritorio. A consequencia de su pequeño tamaño, se puede poner dentro de un lápiz usb y arrancar con el lápiz en cualquier ordenador.
  • DeLi Linux: Especialmente diseñado para ordenadores antiguos, desde 486 a pentium mmx 166, si tu ordenador es más nuevo probablemente tengas problemas con los drivers. Hay cuatro disquetes diferentes de instalación dependiendo del método. Tiene bastantes utilidades, como un editor de texto, una hoja de cálculo, gcc, perl, php y algunas más.
  • Debian: Una gran distribución completamente libre y sin ánimo de lucro, la distribución por excelencia de la GNU. También hay bastantes distribuciones basadas en Debian, como Knoppix o Ubuntu. Utiliza el sistema de paquetes .deb (man apt) que permiten que se actualice todo tu sistema y programas instalados a la última versión con sólo teclear un mandato, también puede manejar paquetes rpm, lo que te hace la vida más fácil, sin embargo la instalación y configuración previas pueden no ser aptas para newbies, por ejemplo es recomendable tener un buen conocimiento del hardware que tienes antes de instalar debian. Leer el resto de la entrada...
18Dic

Video: ¿Qué es un blog?

Otro video de  Common Craft:

 Otros que ya habíamos visto:

Lo he visto en Guapacho.net

17Dic

Listado de Entornos de Desarrollo Integrado para Java

17Dic

[código] Manejo de Excepciones en Java (2)

(anterior) En esta sección se exponen ejemplos en Java acerca del manejo de excepciones, un tema importante en la construcción de aplicaciones de "misión crítica" o de "comercio crítico". Para utilizar un componente de Java, es necesario saber no sólo la manera como se comporta ese componente cuando "las cosas salen bien", sino también cuando "las cosas salen mal". En esta sección se introducen instrucciones imprescindibles en el manejo de excepciones (try, catch, finally).

Demostración de la limpieza de la pila

Leer el resto de la entrada...

© 2007 - 2008 Dezinerfolio. Todos los derechos reservados.
Powered by Wordpress. Entradas RSS