1.就是设置一个标志位,当这个标志位为true的时候,就跳出线程的死循环for()。这个标志位能够由其他线程设置,故应该将这个标志位设置为静态类型的变量。
2.如果一条线程是调用某个windows程序进行运算的,可以通过cmd命令行结束该windows进程。
如打开notepad.exe
public static void main(String[] args) {
Process objProcess = Runtime.getRuntime().exec("cmd /c notepad.exe");
}
杀死windows下notepad.exe的线程:
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Test
{
public static void main(String[] args){
try{
String[] cmd = {"tasklist"};
Process proc = Runtime.getRuntime().exec(cmd);
BufferedReader in = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String string_Temp = in.readLine();
while (string_Temp != null){
System.out.println(string_Temp);
if(string_Temp.indexOf("notepad.exe")!=-1)
Runtime.getRuntime().exec("Taskkill /IM notepad.exe");
string_Temp = in.readLine();
}
}
catch (Exception e)
{
}
}
上面除了使用Taskkill外,还可以使用 ntsd -c q -pn (进程名字)
java中就是
Runtime.getRuntime().exec("ntsd -c q -pn Notepad.exe");
一般第二种方法比第一种强劲一些。