Java, não espere por um fio para completar

votos
7

Eu preciso encontrar uma maneira de girar fora um fio de uma chamada estática e não esperar para o segmento para ser concluído. Basicamente, um dispare e esqueça abordagem. Alguém pode me fornecer com um simples exemplo de como isso pode ser feito?

Publicado 19/05/2009 em 15:58
fonte usuário
Em outras línguas...                            


5 respostas

votos
26

Thread t = new Thread(new YourClassThatImplementsRunnable());
t.start();

// JDK 8
new Thread(() -> methodYouWantToRun()).start();
Respondeu 19/05/2009 em 16:00
fonte usuário

votos
8

Se é um fio de vida longa que tem um ciclo de vida semelhante ao seu próprio app, e vai estar gastando muito do seu tempo à espera de outros tópicos:

new Thread(new yourLongRunningProcessThatImplementsRunnable()).start();

Se é uma tarefa de curta duração, no limite da CPU:

ExecutorService es = Executors.newFixedThreadPool(Runtime.availableProcessors());
es.submit(new yourTaskThatImplementsRunnable());

Embora, na maioria dos casos como este, você vai apresentar uma série de tarefas para esse mesmo ExecutorService.

Vejo:

Respondeu 19/05/2009 em 16:55
fonte usuário

votos
7
public static void foo() {
    new Thread() {
        public void run() {
                     //do something here....
        }
    }.start();
}
Respondeu 19/05/2009 em 16:01
fonte usuário

votos
5

Dependendo da natureza da sua tarefa, maneiras diferentes pode ser approrpiate:

(1) Como muitos já mencionado, uma forma comum para uma tarefa ocasional é simplesmente construir um fio e chamar seu start () método.

(2) Lembre-se que se o seu segmento de segundo plano não parar, em seguida, por padrão, ele irá impedir o seu programa de desligar quando outros tópicos ter terminado. Você pode, portanto, deseja chamar setDaemon (true) no segmento para que ele não tem esse comportamento. (Em aplicações baseadas em GUI, por outro lado, você geralmente acabam apenas chamando System.exit () de qualquer maneira, e, idealmente, você Buile em sua tarefa de longa duração um limpo maneira de desligar.)

(3) Se você freqüentemente têm tarefas de curta duração para "dispare e esqueça", em seguida, considere o uso do quadro Executores disponível a partir de Java 5 em diante.

Respondeu 19/05/2009 em 17:24
fonte usuário

votos
2

basicamente, começar o fio e não executar participar. Então você não vai estar esperando para o segmento para finalizar.

Respondeu 19/05/2009 em 16:05
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more