1.

創(chuàng)新互聯(lián)公司是一家專業(yè)提供天寧企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站制作、成都網(wǎng)站建設、H5高端網(wǎng)站建設、小程序制作等業(yè)務。10年已為天寧眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設計公司優(yōu)惠進行中。
public class TestShutDownHook {
2.
public TestShutDownHook() {
3.
doShutDownWork();
4.
}
5.
private void doShutDownWork() {
6.
Runtime run=Runtime.getRuntime();//當前 Java 應用程序相關的運行時對象。
7.
run.addShutdownHook(new Thread(){ //注冊新的虛擬機來關閉鉤子
8.
@Override
9.
public void run() {
10.
//程序結(jié)束時進行的操作
11.
System.out.println("程序結(jié)束調(diào)用");
12.
}
13.
});
14.
}
15.
public static void main(String[] args) {
16.
new TestShutDownHook();
17.
for (int i = 0; i 1000; i++) { // 在這里增添您需要處理代碼 }
18.
System.out.println(i);
19.
}
20.
}
21.
}
只有調(diào)用系統(tǒng)命令了
Runtime rt = system.getRuntime();
rt.exec("doc 命令");
例如結(jié)束mysql服務:rt.exec("net stop mysql");
打開微軟自帶的計算器:rt.exec("calc.exe);
大致是這樣的。
解決這個問題,要看這個進程是java程序自定義的進程,還是操作系統(tǒng)的進程,操作系統(tǒng)的進程,又可以分為windows進程和Linux進程
一、針對操作系統(tǒng)的進程:
1,首先java用戶,要具有操作進程的權限
2. 針對windows操作系統(tǒng)的進程,比如QQ進程:
String?command?=?"taskkill?/f?/im?QQ.exe";??
Runtime.getRuntime().exec(command);
其中:taskkill 是命令名稱,/f /im 是參數(shù),QQ.exe是進程的可執(zhí)行文件。
3.針對Linux操作系統(tǒng)
String?command?=?"kill?/f?/im?QQ.exe";??
Runtime.getRuntime().exec(command);
二、在Java程序中自定義的進程
思路:在線程中設置一個標志變量,當這個變量的值在外界被改變的時候,有機會結(jié)束運行的線程
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()?{
//?每次循環(huán)都檢測標志
//?如果設置停止標志時已經(jīng)在循環(huán)里
//?則最長需要等待一個循環(huán)的時間才能終止
while?(!allDone)?{
//?循環(huán)里的工作
}
}
}
System.exit(-1)終止當前正在運行的 Java 虛擬機,退出程序。其中參數(shù)按照慣例,是用非零的參數(shù)碼表示異常終止。
在java程序中,可以使用java.lang.System的exit方法來終止程序的執(zhí)行,
12345678
public static void main(String[] args) { System.out.println("開始進入程序..."); //do something System.out.println("程序準備退出了!"); System.exit(0); //下面這句話將不會打印出來 System.out.println("程序已經(jīng)退出了!");}
但是使用exit方法的本質(zhì)是終止了JVM的運行,如果同時運行了另外一個程序,使用exit方法同樣也會使該程序也終止,要避免此種情況可以使用interrupt()來中斷退出一個獨立運行的過程。對于多線程程序,必須要關閉各個非守護線程。
1234567891011121314151617181920212223
public static void main(String[] args) { System.out.println("開始進入程序..."); //do something new Thread(){ public void run() { while (true) { System.out.println("我是另外的線程..."); try { Thread.sleep(2000); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } }.start(); //獲取man線程 Thread main = Thread.currentThread(); System.out.println(main.getName()); main.interrupt(); System.out.println("main線程已經(jīng)退出了,但是不影響其他線程運行!"); }
只有在程序非正常退出時,才使用exit方法退出程序。
網(wǎng)站題目:java的結(jié)束進程代碼,結(jié)束程序運行的代碼
當前URL:http://chinadenli.net/article27/dsihscj.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設、全網(wǎng)營銷推廣、服務器托管、網(wǎng)站排名、自適應網(wǎng)站、商城網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)