olá pessoal,
estou fazendo um pequeno teste com thread… usando apenas o basico (classe Thread e interface Runnable)
e basicamente 2 classes… HardTask e ExecuteHardTask.
a HardTask implementa Runnable e faz um pequeno looping para simular um processamento…
enquanto ele estiver processando ira mostrar o seu progresso em um JProgressBar (uma classe interna de HardTask)…
a ExecuteHardTask ira criar uma Thread a partir do HardTask e executa-lo…
segue classes…
[code]
package threadProgressBar;
import java.awt.Cursor;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JProgressBar;
public class HardTask implements Runnable {
ShowProgressBar showProgressBar;
public HardTask(){
this.showProgressBar = new ShowProgressBar();
}
@Override
public void run() {
int x = 0;
while(x < 101){
try {
showProgressBar.getProgressBar().setValue(x++);
Thread.sleep((int) (Math.random() * 500));
} catch (Exception e) {
e.printStackTrace();
}
if(showProgressBar.getProgressBar().getValue() == 100){
showProgressBar.getProgressBar()
.setString(Thread.currentThread().getName() + " has been done!");
showProgressBar.dispose();
}
}// end while
}// end run()
/** Inner Class **/
class ShowProgressBar extends JDialog{
private static final long serialVersionUID = 1L;
private JProgressBar progressbar;
public ShowProgressBar(){
super(new JFrame(),"Progress Bar");
this.progressbar = new JProgressBar();
this.progressbar.setMaximum(100);
this.progressbar.setStringPainted(true);
getContentPane().add(this.progressbar);
getContentPane().setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
setSize(300,55);
setLocationRelativeTo(null);
setVisible(true);
}
JProgressBar getProgressBar(){
return this.progressbar;
}
}// end inner class
}[/code]
[code]
package threadProgressBar;
public class ExecuteHardTask {
public ExecuteHardTask(){
}
void executeWork(){
HardTask hardTask = new HardTask();
Thread t = new Thread(hardTask, "Task 0ne");
t.start();
}
public static void main (String[] args){
new ExecuteHardTask().executeWork();
}
}[/code]
minha duvida e o seguinte… mesmo apos ter executado td o metodo Run - em HardTask - o processo ainda continua executando… como sei disso? simples e so abrir o gerenciador de tarefas (windows) e ele vai estar lá…
ou como estou usando eclipse… na aba console e me mostra q esta executando… sendo q tenho q dar um click em Stop (botãozinho vermelho ^^)…
então queria saber se isto e normal… ou se estou fazendo alguma coisa de errado?
achei meio estranho…
Jeferson