11/10/2015, 05:16
|
(Desactivado) | | Fecha de Ingreso: marzo-2012
Mensajes: 366
Antigüedad: 12 años, 8 meses Puntos: 31 | |
Diagramas - Seguimiento Procesos Estoy haciendo un programa en java. Java es un lenguaje de POO, con herencia simple y otras características a tener en cuenta a la hora de organizar cualquier programa utilizando este lenguaje.
Mi programa empieza a tener bastantes objetos que se comunican, se instancian unos a otros, se llaman, etc.
Por otro lado, desde mi método main (el raíz desde el que se empieza) ejecuto 2 instrucciones que son el nacimiento de 2 hilos de ejecución distintos. Con lo cual el seguimiento de mi programa empieza a dificultarse.
A su vez, necesito que uno de esos hilos, llegado el momento cree un nuevo hilo de ejecución y este haga una función repetitiva durante un número de veces que desconozco, pero necesito que lo haga en un hilo de ejecución distinto, para que el hilo "padre" pueda seguir con sus funciones.
Sin embargo aquí llega mi problema. Ese hilo hijo hace cosas que pueden interferir con las funciones del padre, y utiliza métodos "críticos" también utilizados por el hilo padre. (No es una clase que extienda de Thread y otra hija de esa... es por llamarlas de alguna manera para intentar que se me entienda. Si no lo consigo decidlo.)
Por otra parte, al ser tantas clases las que tengo, y tan extenso el programa empiezo a liarme con quién hace qué cosa.
He intentado hacer un diagrama de clases... pero no he llegado a entenderlo ni yo mismo. Sin querer lo mezclo con un diagrama de ejecución.. y se me lía.
¿Hay algún modo de esquematizar bien un programa para que, de forma gráfica, se entienda bien de un solo vistazo?
¿Como puedo mezclar un diagrama de clases con uno de ejecución para saber qué hilo usa qué clase y como... y no liarme?
El fin de aclararme con qué hilo usa qué clase es poder declarar esos métodos críticos como syncronized, o incluso para saber donde hacer un wait en un hilo de ejecución, y donde el otro debe hacer un notify. Pero creo más bien que con el syncronized me será suficiente. Pero como digo... tengo ahora mismo el programa tan liado que no me aclaro con él... y no se como organizarlo. |