Bea*_*ear 4 java swing multithreading swingworker
我的java项目中有一个swingworker.我使用netbean"profiler"来监视线程.我不知道为什么swingworker线程仍然存在于NetBeans中的探查器的监视器中,并且处于"等待"状态.换句话说,如果我点击按钮b 10次,就有10个swingworker线程!谢谢.
public static void main(String[] args) {
// TODO code application logic here
final JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.setSize(400, 400);
b = new JButton("B1");
f.add(b,BorderLayout.CENTER);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
return null;
}
}.execute();
}
});
f.setVisible(true);
}
Run Code Online (Sandbox Code Playgroud)
要详细说明我的评论,请查看代码修改的输出:
import java.awt.BorderLayout;
import java.awt.event.*;
import javax.swing.*;
public class Foo002 {
public static void main(String[] args) {
final JFrame f = new JFrame();
f.setLayout(new BorderLayout());
f.setSize(400, 400);
JButton b = new JButton("B1");
f.add(b, BorderLayout.CENTER);
b.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
new SwingWorker() {
@Override
protected Object doInBackground() throws Exception {
Thread current = Thread.currentThread();
System.out.printf("ID: %d, Name: %s%n", current.getId(), current.getName());
System.out.println("Active Count: " + Thread.activeCount());
return null;
}
}.execute();
}
});
f.setVisible(true);
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2775 次 |
最近记录: |