bom dia pessoal, estou precisando de uma ajudinha para entender um negocio…
primeiro vamos entender meu cenario…
preciso fazer uma aplicao (vamos chamar de A1) q leia registros de uma tabela (vamos chamar de T1) q alimentada por uma outra aplicao (vamos chamar de A2), a A2 grava um registro na T1 na entrada de um evento e outro registro na saida desse mesmo evento, com a A1 eu leio esse resgistro do evento de entrada e gravo em outra tabela (T2), em seguida deleto o registro da T1, mando as informaes desse registro por email, em seguida ou um tempo depois registrado pela A2 o registro do evento de saida, a A1 captura esse registro e atualiza o registro de entrada com a hora de saida e deleto o registro de saida da T2…fao isso pq a T1 no normalizada, a A2 no foi muito bem contruida no passado e tem informaes irrelevantes para hj…ate aqui ok…
o q fiz para resolver…
criei uma singleton para fazer a conexo com o banco…
criei duas classes q extends Thread, e cada uma obtem a conexo da singleton,
uma dessas classes (C1) fica responsavel pela captura do registro de entrada da T1, inserir na T2, enviar por email e excluir da T1,
sequencia logica
tenho um while true para manter a thread viva e dento de um while q s executa a logica abaixo quando tiver 1 ou mais registro na tabela…
1 - efetura um SELECT no banco
2 - com as informaes chama o metodo de outra classe (C3) para o envio de email
3 - efetua um DELETE no banco
a outra classe (C2) faz o mesma coisa s que com o registro de saida, s nao envia por email…
nessa C3 ela tb ativa uma outra classe contendo Thread…s q no momento do teste no estou usando, ento ela somente esta enviado o email e ativando essa Thread…ok
meu problema!
rodo as duas aplicaes, atraves da A2 foro um evento para ser gravado, a A1 captura esse evento, manda por email s q a ao meu ver a thread para ai, se eu tirar esse evento a C2 executa normalmente enquando a C1 ainda esta naquele ponto, se entrar com outro evento a C1 continua se tirar esse ultimo evento a C2 executa
no sei se tem haver com a Thread q ativei mais no estou usando, pode ser q ela esteja usando o processamento?!?!
para fazer um teste contrui um JFrame basico para ver alguns logs…acontecia a mesma coisa…so q quando minimizava e restaurava a tela o processo da C1 executava de onde tinha parada, meio q ela “acordava” quando mexia no JFrame criado…achei estranho!!!
alguem tem uma ideia do q pode estar acontecendo???
posso ter duas threads acessando o banco? isso esta acarretando concorrencia ou algo do tipo???
desde ja obrigado!!!
PS: foi um pouco longo, e meio complexo de explicar, espero q entendam…qualquer coisa posto o codigo depois