Threads (ou será forks?) em java

Fork

What is folding?
Boas,

Estou a criar um projecto em java. Ele corre um comando da shell (Process) e parsa o resultado para ser mostrado.

Agora tenho um problema no ambiente gráfico. Quando mando correr o processo o programa deixa de responder enquanto o processo está activo. O que eu quero fazer é poder matar o processo a partir do interface gráfico clicando no botão cancelar.

O processo é um traceroute

Código:
    private void runButtonActionPerformed(java.awt.event.ActionEvent evt) {                                          
        //FIXME: Arranjar maneira de poder cancelar o processo 
        List<ResultLine> res;
        resultArea.setText("");
        stopButton.setEnabled(true);
        
        // Para o caso de não ser especificado um destino
        if (targetField.getText().isEmpty())
            targetField.setText("localhost");
        
        // Corre o traceroute do sistema
        res = TR.traceroute(targetField.getText(), Settings.hops, Settings.waitTime);            
        
        // Verifica se o resultado é nulo
        if (res == null)
            resultArea.append("Erro: Trace a rota não foi calculada");
        
        // Constroi a String com os resultados
        StringBuilder s = new StringBuilder();
        for(ResultLine r : res){
            s.append(r.toString());
        }
        resultArea.setText(s.toString());
        stopButton.setEnabled(false);
}

Agradeço a vossa ajuda
 
Não percebi bem o que queres dizer com ambiente gráfico, estás a falar da interface do teu programa ou do IDE?
Mas seja como for, tanto forks como threads parecem ser a solução para o teu problema. No entanto como estás em Java recomendo-te a usar threads que estão bem integradas na linguagem e fazem parte da biblioteca standard.
 
Back
Topo