在java程序中,可以使用java.lang.System的exit方法來終止程序的執(zhí)行,
高明網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)公司!從網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開發(fā),運(yùn)營維護(hù)。創(chuàng)新互聯(lián)公司從2013年創(chuàng)立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來保證我們的工作的順利進(jìn)行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)公司。
12345678
public static void main(String[] args) { System.out.println("開始進(jìn)入程序..."); //do something System.out.println("程序準(zhǔn)備退出了!"); System.exit(0); //下面這句話將不會打印出來 System.out.println("程序已經(jīng)退出了!");}
但是使用exit方法的本質(zhì)是終止了JVM的運(yùn)行,如果同時(shí)運(yùn)行了另外一個(gè)程序,使用exit方法同樣也會使該程序也終止,要避免此種情況可以使用interrupt()來中斷退出一個(gè)獨(dú)立運(yùn)行的過程。對于多線程程序,必須要關(guān)閉各個(gè)非守護(hù)線程。
1234567891011121314151617181920212223
public static void main(String[] args) { System.out.println("開始進(jìn)入程序..."); //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)退出了,但是不影響其他線程運(yùn)行!"); }
只有在程序非正常退出時(shí),才使用exit方法退出程序。
直接結(jié)束好像不行。不過可以獲得系統(tǒng)進(jìn)程list。同時(shí)結(jié)束一個(gè)java執(zhí)行的進(jìn)程;
try {
Process p = Runtime.getRuntime().exec("tasklist");
BufferedReader bw = new BufferedReader(new InputStreamReader(p
.getInputStream()));
String pstr = "";
while ((pstr=bw.readLine())!=null){
System.out.println(pstr);
}
p.destroy(); //結(jié)束tasklist進(jìn)程
} catch (Exception e) {
e.printStackTrace();
}
}
方法如下:
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("----------------");
Object o = sc.next();
String str = o.toString();
if ("-1".equals(str)) {
break;
}
int n1 = sc.nextInt();
int n2 = sc.nextInt();
//調(diào)用方法
}
}
解決這個(gè)問題,要看這個(gè)進(jìn)程是java程序自定義的進(jìn)程,還是操作系統(tǒng)的進(jìn)程,操作系統(tǒng)的進(jìn)程,又可以分為windows進(jìn)程和Linux進(jìn)程
一、針對操作系統(tǒng)的進(jìn)程:
1,首先java用戶,要具有操作進(jìn)程的權(quán)限
2. 針對windows操作系統(tǒng)的進(jìn)程,比如QQ進(jìn)程:
String?command?=?"taskkill?/f?/im?QQ.exe";??
Runtime.getRuntime().exec(command);
其中:taskkill 是命令名稱,/f /im 是參數(shù),QQ.exe是進(jìn)程的可執(zhí)行文件。
3.針對Linux操作系統(tǒng)
String?command?=?"kill?/f?/im?QQ.exe";??
Runtime.getRuntime().exec(command);
二、在Java程序中自定義的進(jìn)程
思路:在線程中設(shè)置一個(gè)標(biāo)志變量,當(dāng)這個(gè)變量的值在外界被改變的時(shí)候,有機(jī)會結(jié)束運(yùn)行的線程
public?class?T?{
public?static?void?main(String[]?args)?{
//?啟動(dòng)線程
MyThread?thread?=?new?MyThread();
new?Thread(thread).start();
//?你的其它的工作,此時(shí)線程在運(yùn)行中
//?你不想讓線程干活了,停掉它
//?注意,這只是一個(gè)標(biāo)志,具體線程何時(shí)停,并不能精確控制
thread.allDone?=?true;
}
}?
class?MyThread?implements?Runnable?{
boolean?volatile?allDone?=?false;
public?void?run()?{
//?每次循環(huán)都檢測標(biāo)志
//?如果設(shè)置停止標(biāo)志時(shí)已經(jīng)在循環(huán)里
//?則最長需要等待一個(gè)循環(huán)的時(shí)間才能終止
while?(!allDone)?{
//?循環(huán)里的工作
}
}
}