Seria melhor para interrupção () um thread inactivo em vez de espera () / notify ()?

thelostmachine:

Eu tenho um Managerque gere um par de FileSystems(minha própria abstração). É possível que um deles FileSystemsnã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 FileSystemera 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
}
Aman Goyal:

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.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=192044&siteId=1
Recomendado
Clasificación