Thread starvation?

Amigos

Tenho uma aplicação que executa muitas threads. Cada uma dessas threads acessa um buffer de dados global na aplicação e retira uma informação deste buffer.

o buffer é um HashSet, o acesso aos dados do buffer é synchronized. Eu pude perceber 2 coisas durante o teste de stress:

1 - algumas threads deixam de ser executadas por algum motivo que não consigo descobrir, pois o getMessage() so me retorna NULL

2 - A maquina virtual acaba não executando todas as threads, no meu teste atual com 30 threads, pelo menos 5 ficaram em starvation, eu sei que as threads nao morreram, pq mandei elas sinalizarem com mensagem antes que isso acontecesse

ao que pude reparar, a JVM não trabalha com muitas threads ou isso é limitação de hardware ? pois a aplicação esta rodando em uma a´quina com 2 Gigas de RAm e apenas 1 núcleo

o q vcs acham ??

Já fiz aplicações com mais de 200 threads.

Melhor descobrir pq suas threads misteriosamente deixam de executar.
Provavelmente tem erro no seu software.

Por favor, não destaque o óbvio nos títulos (DÚVIDA, AJUDA, SOCORRO, etc).