Threads e banco de dados

tenho o seguinte cenario:

base de dados: H2 embutida na aplicação
Threads: varias threads acessando a base de dados para inserir informações
Tabelas: 3 tabelas (1,2,3)

1 -a thread main abre a conexao com o banco e as outras threads usam esta conexao, optei por nao ficar conectando o tempo todo na base de dados (essa conexao nao e mais fechada)

2 - a thread main cria todas as outras threads

3 - uma thread qualquer, deve retirar um dado da tabela 1 , colocar na tabela 2 provisoriamente, e depois de usar a informação, colocar na tabela 3

O probelma esta quando eu faço um COUNT na tabela 2, ao inves de aparecer que existe um dado na tabela, o COUNT me torna sempre um valor menor em 1 unidade (se tiver 1 dado, me retorna 0)

alguem saberia me dizer onde esta o erro ?

ps - a thread main, obtem o valor do COUNT correto, mas as outras threads sempre com valor menor

Mostre seu código onde está ocorrendo o erro