Área compartilhada em threads

Bom dia,

Estou aprendendo a implementar threads agora e eu estava lendo o capítulo 23 do livro da Deitel 6 edição. E pelo o que eu vi a implementação de threads necessita: uma classe que é a area compartilhada (seção crítica), uma classe pra sincronização (mandando quando uma thread “acorda” e quando uma thread “dorme”), uma classe que é pra implementar o que a thread deve fazer de acordo com a area compartilhada, e uma classe pra rodar a main e determinar quantas threads eu posso ter com o newFixedThreadPool.

A minha dúvida é: eu tenho dois arquivos com matrizes de dados, cada thread vai ler parte do arquivo. Mas eu não sei como que eu implemento na classe de compartilhamento, se tratando de dois arquivos diferentes.

Vocês podem me explicar como faço a declaração dessa área compartilhada?

No livro é implementado:

[code]interface Buffer {
public void set(int value);

public int get();
}
[/code]

Porém, é tratado para um buffer, uma área do processador onde uma thread gera um numero aleatório, coloca nesse buffer (apenas um número) e outra thread a consome, clássico: produtor/consumidor.

Muito obrigado a todos que leram minha dúvida.

A sessão crítica nada mais é do que um conjunto de variáveis que serão escritas ou lidas por duas threads ao mesmo tempo.
Se seus arquivos são diferentes, e suas threads forem diferentes, então, não haverá sessão crítica durante a leitura. É o tipo ideal de situação, pois os programas poderão rodar efetivamente em paralelo.

Talvez haja algum tipo de sessão crítica no resultado das threads, se elas forem escrever no mesmo lugar.