Foros del Web » Programación para mayores de 30 ;) » Java »

necesito sincronizar mis thread

Estas en el tema de necesito sincronizar mis thread en el foro de Java en Foros del Web. hola, tengo una duda teórica. Tengo un server socket que acepta muchas conexiones. Por cada conexión genero dos thread, una emisora, y otra receptora. Ambas ...
  #1 (permalink)  
Antiguo 01/07/2011, 05:21
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 9 meses
Puntos: 17
necesito sincronizar mis thread

hola, tengo una duda teórica.

Tengo un server socket que acepta muchas conexiones. Por cada conexión genero dos thread, una emisora, y otra receptora.

Ambas usan una base de datos, de la que leen y actualizan datos. También tengo una web en php que utiliza esta misma base de datos.

Lo que son los sockets ¿necesito sincronizarlos? Según creo cada uno va por "tuberías" independietnes, y aunque recibiera datos a la vez no tendría problema.¿Es así?

Y los accesos a la base de datos? Esto si que debería sincronizarlos, ¿verdad?

Gracias!!!
  #2 (permalink)  
Antiguo 01/07/2011, 05:38
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 2 meses
Puntos: 454
Respuesta: necesito sincronizar mis thread

Buenas:

Los accesos a la base de datos no necesitas sincronizarlos salvo que sean varios hilos dentro del mismo ejecutable y compartan la misma instancia de Connection. La forma de sincronizarlo sería

Código java:
Ver original
  1. Connection conexion = algo que te devuelve una conexion con bd;
  2. ....
  3. synchronized (conexion) {
  4.     // Aqui tu operacion con bd.
  5. }

como te digo, no es necesario si cada hilo tiene su propia Connection.

En los sockets pasa lo mismo. Varios sockets son independientes entre sí, por lo que no necesitas sincronizarlo y dentro de un socket, la entrada y la salida (InputStream y OutputStream) son indpendientes, por lo que tampoco tienes que sincronizar el hilo lector con el hilo escritor.

Si tendrías que sincronizar la salida (el OutputStream) si varios hilos van a escribir en una misma salida. Como antes, synchronized (laSalidaDelSocket) { .... }

En general no tiene sentido tener varios hilos leyendo de una misma entrada simultaneamente, porque se estarían "peleando" por los mensajes recibidos.

Se buena.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 01/07/2011, 08:02
 
Fecha de Ingreso: marzo-2009
Mensajes: 509
Antigüedad: 15 años, 9 meses
Puntos: 17
Respuesta: necesito sincronizar mis thread

Gracias! efectivamente cada conexión a la bd es diferente, se abre y se ciera de manera independiente.

Cita:
Si tendrías que sincronizar la salida (el OutputStream) si varios hilos van a escribir en una misma salida. Como antes, synchronized (laSalidaDelSocket) { .... }
Aquí no te entiendo, si tengo varios socket abiertos, todos comparten el OutputStream pero no comparten el InputStream??? que raro,. no¿¿¿


Gracias!

Etiquetas: sincronizar, threads
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:41.