Eu tenho um Manager
que gere um par de FileSystems
(minha própria abstração). É possível que um deles FileSystems
não recebe dados por algum tempo, então eu gostaria de idle-lo. Sempre que os dados é finalmente recebido pelo Manager
, deve despertar a respectiva ocioso FileSystem
. Agora eu estou usando wait()
e notify()
e eu obter os resultados que deseja.
No entanto, todo o ponto de marcha lenta de uma FileSystem
era para consumir menos recursos. Eu queria saber se ele pode ser melhor apenas para interrupt()
o Thread
, então, criar um novo quando é hora de ativar um FileSystem
(poderia levar dez minutos ou mais por novos dados para entrar)? Não esperando recursos do suíno ainda?
Aqui está a configuração do meu Runnable
.
public class FileSystem implements Runnable
{
public FileSystem()
{
// do stuff
startTimer()
}
@Override
public void run()
{
while (!Thread.currentThread().isInterrupted())
{
// do stuff
}
}
//public void startTimer()
//{
// new Thread(new Runnable()
// {
// @Override
// public void run()
// {
// // do something
// }
// }).start();
//}
// other methods
}
Depende. Se operação de leitura criar grande quantidade de recursos e acontece muito frequentemente, em seguida, melhor para esperar por arquivo. Mas se fio de leitura é leve e fica ocioso muito, então é melhor criar novo segmento.