Fila de um banco utilizando multithread

Implementar um software para controle de filas de banco considerando a API multi-thread Java.

Padrão produtor-consumidor: vários atendentes e uma ou mais fila de clientes. Há um produtor que inclui clientes na(s) fila(s) enquanto os caixas representam consumidores que chamam os clientes para atendimento;

Filas com prioridades diferentes para cada tipo de cliente

Tempo de atendimento simulado em função do número de operações que cada cliente vai realizar;

Para simular o ambiente, os clientes são criados aleatoriamente com número de operações também aleatórias. Cada operação deve impactar em um segundo de atendimento para a simulação;

Simular aumento/diminuição do número de atendentes (caixas) em função de horário de almoço, por exemplo;
Interface deve ser implementada em JavaFX2;

Gerar relatórios, que devem ser salvos em XML, contendo ao menos informações como o número de atendimentos diário por caixa, número médio de operações por atendimento, quantidade de clientes prioritários e tempo médio de atendimento considerando faixas de horário (de uma em uma hora).

Pessoal é um trabalho e gostaria de uma ajuda, se algum tiver um tutorial ou um site para me dar uma ajuda ? se alguém tiver feito algo parecido também seria uma boa ajuda

Alguém ? teria alguma instrução , tutorial, exemplo ?

Você pode olhar as classes do pacote java.util.concurrent, e olhar qual delas é mais aplicável para seu caso.

http://docs.oracle.com/javase/6/docs/api/java/util/concurrent/package-summary.html

Além disso, pode tentar achar os seguintes livros para ler:

Java Concurrency in Practice - Brian Goetz

E ler o Java Tutorial:

http://docs.oracle.com/javase/tutorial/essential/concurrency/

Uma coisa que você tem urgentemente de se libertar é do conceito de threads (incrível, mas é verdade). Threads estão para a programação concorrente assim como o goto está para a programação estruturada: ou seja, são um conceito de nível muito baixo e desestruturado. Tanto é que sua “fila de banco” não vai sair de jeito nenhum usando só threads se você precisar entregar isso logo, já que você vai acabar é gastando muito tempo debugando código de threads, que é coisa para profissionais. Usar Executors, Tasks e Callables é bem mais fácil.