
解决这个问题,要看这个进程是java程序自定义的进程,还是 *** 作系统的进程, *** 作系统的进程,又可以分为windows进程和Linux进程
一、针对 *** 作系统的进程:
1,首先java用户,要具有 *** 作进程的权限
2. 针对windows *** 作系统的进程,比如QQ进程:
String command = "taskkill /f /im QQ.exe"Runtime.getRuntime().exec(command)
其中:taskkill 是命令名称,/f /im 是参数,QQ.exe是进程的可执行文件迹祥哗。
3.针对Linux *** 作系统
String command = "kill /f /im QQ.exe"Runtime.getRuntime().exec(command)
二、在Java程序中自定义的进程
思路:在线程中设置一个标志变量,当这个变量的值在外界被改变的时候,有机会结束运行的线程
public class T {public static void main(String[] args) {
// 启动线程
MyThread thread = new MyThread()
new Thread(thread).start()
// 你的其它的工作,此时线程在运行中
姿行 // 你不想让线程干活了,停掉它
// 注意,这只是一宴圆个标志,具体线程何时停,并不能精确控制
thread.allDone = true
}
}
class MyThread implements Runnable {
boolean volatile allDone = false
public void run() {
// 每次循环都检测标志
// 如果设置停止标志时已经在循环里
// 则最长需要等待一个循环的时间才能终止
while (!allDone) {
// 循环里的工作
}
}
}
方案 *** 作如下:
(1)让程序在一拍漏个单独的线程中运行,然后在终止时,可以用线程的终止方法来结带贺好束它。蠢铅
(2)退出Java程序时尽量不要使用java.lang.System的exit方法。Exit 方法可以终止JVM,从而终止程序,但如果同时运行了另一个Java程序,使用exit方法就会让该程序也关闭,这显然不是希望看到的情况!!!!
要退出Java程序,可以使用destory()退出一个独立运行的过程。对于多线程程序,必须要关闭各个非守护线程。
只有在程序非正常退出时,才使用exit方法退出程序
http://www.baidu.com/s?wd=52095384130
我详细说一下吧java程序启动之后,JVM(java虚拟机)会实例化一个Runtime类,这是一个运行时类实例,包含这个java程序运行肢裂正的所有信息,一个程序会实例化一个Runtime类且只能实例化一个Runtime类。我们可以通过这个Runtime类实例 *** 作程序的运行。它的exit(int status)方法会终止程序的运行。例:
Runtime.getRuntime().exit(0)
其中参数status表示状历悔态,0表示正常退出,非0表示异常退出。非0参数有什么用呢?
addShutdownHook(Thread hook)方法可以将一个Thread可程序的关闭hook(挂/联系)起来,程序退出前,会执行这个方法,这样我们可以根据退出状态作相应的善后 *** 作。
另外,System.exit(int status)也是调用这个Runtime类实源睁例的退出方法来间接实现程序的退出的。
再加一点,Runtime类可以创建子进程,如下:
Process p=Runtime.getRuntime().exec("notepad")
这个语句将会创建一个记事本程序(它是Runtime类创建的子进程)
p.destroy()
这个语句终止刚才创建的子进程。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)