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

[SOLUCIONADO] procesos simultaneos

Estas en el tema de procesos simultaneos en el foro de Java en Foros del Web. hola, necesito correr varios procesos almacenados en PL....el programa ya esta funcionando pero cada proceso se demora 30 minutos, como puedo hacer para que lanzar ...
  #1 (permalink)  
Antiguo 01/09/2014, 15:33
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 11 años
Puntos: 1
procesos simultaneos

hola, necesito correr varios procesos almacenados en PL....el programa ya esta funcionando pero cada proceso se demora 30 minutos, como puedo hacer para que lanzar varios procesos al tiempo....

para lanzarlos lo hago de esta forma :

Código Java:
Ver original
  1. CallableStatement callableStatement2=  cn.prepareCall("{call lfv_pk_ind_c.prc_calcula_indicador(?,?,?,?,?) }");                  
  2.         callableStatement2.setString("p_fvt_id","Fox");  
  3.         callableStatement2.setInt("p_din_id",1003);  
  4.         callableStatement2.setDate("p_fecha_ini", FIX2);  
  5.         callableStatement2.setDate("p_fecha_fin",  FFX2);  
  6.         callableStatement2.setInt("p_proceso",3946);  
  7.     try {
  8.            callableStatement2.execute();
  9.         } catch (Exception e) {
  10.         e.printStackTrace();
  11.         System.out.println(e);
  12.     }
  13.         cn.commit();

Despues cambio parametros y vuelvo a lanzar y asi sucecivamente....

Alguna idea?
  #2 (permalink)  
Antiguo 02/09/2014, 00:20
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: procesos simultaneos

Buenas,

Si estás seguro de que la ejecución simultanea de esos procedimientos no provocan condiciones de carrera... entonces puedes utilizar threads:

http://docs.oracle.com/javase/tutorial/essential/concurrency/


Un saludo
  #3 (permalink)  
Antiguo 02/09/2014, 02:30
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 20 años, 1 mes
Puntos: 454
Respuesta: procesos simultaneos

Hola:

Creo que no puedes usar la misma connection simultaneamente en varios threads. Si ves que hay problemas al leer, cada hilo debería obtener su propia connection.

Es posible que ganes tiempo también si en vez de hilos usas batch http://tutorials.jenkov.com/jdbc/cal...#batch-updates

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #4 (permalink)  
Antiguo 02/09/2014, 06:06
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 10 años, 3 meses
Puntos: 182
Respuesta: procesos simultaneos

Buenas,

Efectivamente cada thread deberia obtener su propia conexion. Yo no hablo de crear miles de threads (lo cual sera contraproducente), sino de habilitar unos pocos threads simultaneos (4? quizas 8?). Si le maquina en la que esta intalada la bbdd es multinucleo y/o multiprocesador la mejora en tiempos podria ser muy importante.

Con los batch se ahorra tener que hacer varias llamadas a la bbdd, pero la ejecucion de estos seguiria siendo secuencial, por lo que los tiempos no cambiarian mucho.


Un saludo
  #5 (permalink)  
Antiguo 02/09/2014, 08:30
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 11 años
Puntos: 1
Respuesta: procesos simultaneos

Bien, con estas ideas, voy a investigar y les contare mi conclusion, muchas gracias por sus consejos.
  #6 (permalink)  
Antiguo 03/09/2014, 09:57
 
Fecha de Ingreso: noviembre-2013
Mensajes: 147
Antigüedad: 11 años
Puntos: 1
Respuesta: procesos simultaneos

Finalmente opte por la solucion Batch, puesto que es mas facil de implementar y no necesito crear nuevas conexiones, la he probado con 4 procesos y por ahora funciona de maravilla, he leido sobre los hilos y es un tema bastante interesante, espero implementarlo en un futuro.

Gracias por sus aportes.

Etiquetas: procesos, programa
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 13:56.