Problemas con hilos y variables
Hola
Tengo un problema, en un ciclo declaro una variable que voy llenando conforme el loop, dentro del loop tengo una condicion, cuando la variable llegue a contener 1000 objectos lanzo un hilo y le paso la variable para que la atienda, saliendo del if tengo que vaciar la variable para que se siga llenando, pero como la variable se la pase a un nuevo hilo el hilo marca null pointer exception (obvio por que nulie la variable en el metodo anterior), alguien sabra como solucionar esto.
Se me ocurre usar reflection para crear variables, pero creo que no estan facil de hacerlo, y no se me ocurre como solucionarlo.
PD: el ciclo es infinito
gracias
- Inicie sesión o regístrese para enviar comentarios
...Y si pones algo de
...Y si pones algo de código?
Y bueno, así de entrada, en lugar de "nuliarla" porqué mejor no te creas un método que limpie las propiedades de tu bean??
Codigo
el codigo no lo puede poner por que depende de muchas cosas pero este seria un ejemplo
Entonces el hilo marca nullponter exception por que las variables se pasan por referencia, el problema no es el list = null; el problema es como creo una nueva referencia o como pasar un parametro por valor no por referencia
Pues de entrada, con el
Pues de entrada, con el
ya no necesitas apuntarla a null, y crearla de nuevo, ése metodo limpia tu lista, y viéndolo como lo expones, tendrías entonces que "clonar" (por decirlo de alguna forma) tu lista, es decir, creas una lista2, le copias el contenido de tu lista1, envías tu lista2 al proceso que dices, limpias tu lista1 y la vuelves a llenar....
solucion
solo cambie este pedaso de linea
osea creo un nuevo ArrayList, pero no estoy seguro, si con esto tambien comparten la referencia en memoria, pero por lo pronto ya jala
gracias
copia
Parece que ya lo solucionaste; es importante que al otro hilo le pases una nueva lista que no se vaya a modificar en el ciclo del hilo principal, o si le pasas esa lista, entonces en tu ciclo principal creas una nueva para continuar trabajando, pero la cosa es que no esten ambos hilos trabajando sobre la misma lista.
Simple
Como diria un amigo.... tas viendo y no ves.
La solución está frente a tus ojos. Tienes una variable en el thread 1, a esa le asignas una instancia de ArrayList, la vas llenando de objetos y cuando llega a un numero de elementos creas un thread 2 y se la pasas, y como bien apuntaste en java los objetos se pasan por referencia, entonces tanto en el thread 1 como en el 2 tienes dos variables, ambas apuntando a la misma instancia de ArrayList, entonces lo único que debes hacer es en el thread 1 asignarle una nueva instancia a tu variable y listo.
Cuando haces el clear es lo que seguramente te esta ocasionando broncas, por que si el thread 2 esta movimiendo la info del ArrayList y tu lo limpias puedes entrar en un Concurrent Exception, el nular tu variable no debe tener problemas ya que estas nulando la variable del thread 1, no la del thread 2.
Sobres