2009-12-02 6 views
27

He estado programando en Java por un tiempo (5 años), y creo que tengo una buena comprensión de la mayoría de los aspectos del lenguaje. Sin embargo, creo que no he trabajado tanto con los subprocesos como me gustaría.Pequeño proyecto para aprender los hilos de Java

¿Cuál sería un buen proyecto pequeño para aprender profundamente los hilos de Java?

¿Alguna recomendación?

Gracias

+0

En realidad, esto me parece bastante constructivo. Pista sugerencia – Chrips

Respuesta

18

Una aplicación cliente-servidor:

el servidor acepta conexiones en un enchufe y crear un hilo de comunicación para cada cliente.

esto podría ser un juego, o un administrador de tareas o cualquier cosa que desee.

Editar: Desarrollé un cliente de eMule como este durante mi pasantía, es fácil de hacer, y puede explorar todos los aspectos de la programación de subprocesos.

+2

+1 - un proyecto clásico. Encontrarás muchos fragmentos, tutoriales y ayuda en la red (y en SO). –

+0

Suena como una buena idea agregar la función multijugador en línea a los juegos que he codificado en los últimos 2-3 meses (pacman, damas, tetris, etc.). Voy a tratar de hacer esto en Pac-Man, tal vez un controlador de jugador para cada fantasma? (probablemente será aburrido, pero al menos usaré hilos profundamente, supongo) –

+2

Reflexiona sobre cómo probar el multihilo de la misma; en otras palabras, asegurándose de que lo hizo bien. Poder utilizar una herramienta como JMeter para ejercitar el servidor puede ayudar a exponer algunos problemas. – VoiceOfUnreason

4

Escribir un rastreador web !!

7

Una excelente forma de comenzar es implementando el problema Producer/Consumer. Esto le permite lidiar con la iniciación de varios hilos, sincronización, bloqueo y cómo salir de la ejecución del hilo. Una vez que hayas hecho eso, deberías tener una buena idea sobre el enhebrado de Java (y el enhebrado en general).

7

Aprendí hilos escribiendo una simulación de ascensor. Cada hilo es un objeto que representa un elevador en un edificio. Una estructura separada contiene "¿qué botones se presionaron en los pisos?"

Puede que no sea un uso práctico, no es un webcrawler, pero es una hora o dos, y seguramente tendrá una mejor comprensión de los hilos y la sincronización cuando haya terminado. Si quieres pasar mucho más tiempo jugando con esto, todavía podría intentar algo muy simple primero, para mojarte los pies.

+0

Al igual que el del libro Deitel & Deitel? –

+0

@davidrobles: Nunca he leído el libro completo Java Deitel2, y han pasado muchos años desde que vi su C++ uno, pero sí, no me sorprendería si estuviera allí. –

8

Escribí una versión java de PacMan. PacMan estaba en su propio hilo, al igual que cada Fantasma. Cada fantasma tenía su propio algoritmo para encontrar PacMan.

+1

Escribí un Pac-Man también, ¡pero nunca usé hilos! Solo uno para todo el juego. Trataré de ver cómo puedo poner hilos allí. –

3

Pruebe a desarrollar un sistema de mensajes instantáneos donde múltiples usuarios se conectan a un solo servidor. El exerpt a continuación se ha tomado de Dietel y Dietel - Java Cómo programar sexta edición

Las salas de chat se han vuelto comunes en la Internet. Proporcionan una ubicación central donde los usuarios pueden chatear entre sí a través de mensajes de texto cortos mensajes. Cada participante puede ver todos los mensajes que los otros usuarios publican, y cada usuario puede publicar mensajes.

Con este ejercicio puede poner a prueba sus 5 años de experiencia, ya que este pequeño proyecto requiere no solo multihilo, sino redes y GUI. Además, necesitas utilizar una técnica llamada multidifusión.

También, proyectos de código abierto haciendo un uso extensivo de multihilo es otro buen lugar para obtener inspiración y ver ejemplos de la vida real. Desde allí, puede participar o iniciar su propio proyecto de código abierto.

¡Todo lo mejor!

3

Como primer paso, considere implementar el Dining Phisolophers problem. Esto le presentará diversas formas de iniciar subprocesos, definir trabajos particionados y compartir datos entre subprocesos.

Existen muchas soluciones "correctas" y muchos intentos más peligrosos. Comience a minar the java.util.concurrent packages temprano. Escríbalo mal y explore lo que se necesita para hacerlo correcto.

3

Escriba un software de chat P2P con TCP. También necesitará conocer las clases y los flujos de red Java Networking, pero no es demasiado difícil. ¡Y aprender el paquete java.net merece la pena!

Cuestiones relacionadas