Prioridade das Threads

Bom dia.

Estou tendo um problema aqui com prioridades das threads,
Tenho um aplicativo, que inicia para mim, 8 threads, que fica escutando
em uma porta X.
Ou seja meu aplicativo aceita, multiplas-conexoes simultaneas,
cliente - servidor.
Nessa porta X, ela recebe um arquivo xml, que e interpretado pelo java.
e inserido no banco de dados usando jdbc connection.

Imagine o seguinte, que a estrutura do XML e a seguinte.

  1. X
    Y
  • a
  • b
  1. X
    Y
  • a
  • b

Entenderam?

Agora o seguinte no meu socket cada thread e responsavel, por cada xml que eu recebo, na porta X.

Agora o seguinte, todos os meus metodos sao sincronizados (syncrhonized) certo? Isso garante que ao inserir as tuplas no banco de dados nao fique inconsistente.

Mais em certas partes do programa, o sgbd tenta inserir, dados da thread 2 e dados da thread 1

Ex:

  1. X
  2. a
    b

E isso ta gerando erro de violacao de chave estrangeira?
Não entendo o seguinte, não existe prioridades para a execucao?
Sendo que os meus metodos estao sincronizados?

Alguem ja passou por isso?

To esperando resposta.

:smiley:

Desculpe, mas juro mesmo que eu tentei entender o que você escreveu, mas não consegui. Poderia ser mais claro? :wink:

Sobre prioridade de Threads, quando você cria uma nova thread, sua prioridade é definida como Thread.NORM_PRIORITY. Se você precisar por algum motivo obscuro alterar o nível de prioridade de sua Thread, use o método Thread.setPriority(int), passando como parâmetro o novo nível de prioridade (valores entre 1 e 10).
Também é bom lembrar que em certos sistemas operacionais (como o Windows NT) não existem 10 níveis diferentes de prioridade para Threads. Desta forma, apenas alguns níveis vão ser mapeados para os níveis correspondentes do sistema operacional em questão.

Ahh!! Em JVM antigas para Linux havia um probleminha em relação a prioridade de Threads: elas eram completamente ignoradas. Não sei como andam as coisas hoje em dia (Louds?!).