我似乎無法弄清楚爲什麼當我試圖阻止正在運行的線程時出現空指針異常。 ftprun.requestStop()設置while循環的值,以便應用程序停止。關閉線程的問題
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
JButton btn = (JButton) e.getSource();
Thread ftpthread= null;
LocalFTP ftprun = null;
switch (e.getActionCommand()) {
case "Start Sorter":
if(ftp) {
JOptionPane.showMessageDialog(frame, "Sorter and ftp cannot run at the same time");
} else {
sorter=true;
btn.setText("Stop Sorter");
btn.setBackground(SystemColor.green);
}
break;
case "Start ftp":
if(sorter) {
JOptionPane.showMessageDialog(frame, "Sorter and ftp cannot run at the same time");
} else {
ftp=true;
btn.setText("Stop ftp");
btn.setBackground(SystemColor.green);
Config config = new Config();
try {
File cf= new File(Configfile.configfile);
if (cf.exists()) {
config=ConfigurationTools.openconfig(Configfile.configfile);
}
else {
ConfigurationTools.writeconfig(Configfile.configfile, config);
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
ftprun= new LocalFTP(config,config.getlocalftpinterval());
ftpthread=new Thread (ftprun);
ftpthread.start();
}
break;
case "Start Uploader":
uploader=true;
btn.setText("Stop Uploader");
btn.setBackground(SystemColor.green);
break;
case "Stop Sorter":
sorter=false;
btn.setText("Start Sorter");
btn.setBackground(SystemColor.menu);
break;
case "Stop ftp":
ftp=false;
btn.setText("Start ftp");
btn.setBackground(SystemColor.menu);
ftprun.requestStop();
break;
case "Stop Uploader":
uploader=false;
btn.setText("Start Uploader");
btn.setBackground(SystemColor.menu);
break;
}
}
有什麼建議。我試圖設置線程和可運行的變量爲靜態,但我剛剛得到一個錯誤。
如果你會說你在哪裏得到異常,這將有所幫助。如果你想出一個簡短但完整的例子來說明這個問題,那也是非常有用的。 – 2013-05-11 13:35:27
棧跟蹤.... – m0skit0 2013-05-11 13:38:25
就像我說的,當試圖停止使用ftprun.requestStop()完成的線程時,我得到空指針異常。我會在問題中提到這一點。 – Codeguy007 2013-05-11 15:06:55