方案操作如下:
成都創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的珠海網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
(1)讓程序在一個單獨的線程中運行,然后在終止時,可以用線程的終止方法來結(jié)束它。
(2)退出Java程序時盡量不要使用java.lang.System的exit方法。Exit?方法可以終止JVM,從而終止程序,但如果同時運行了另一個Java程序,使用exit方法就會讓該程序也關(guān)閉,這顯然不是希望看到的情況?。。?!
要退出Java程序,可以使用destory()退出一個獨立運行的過程。對于多線程程序,必須要關(guān)閉各個非守護線程。
只有在程序非正常退出時,才使用exit方法退出程序
在java程序中,可以使用java.lang.System的exit方法來終止程序的執(zhí)行,
12345678
public static void main(String[] args) { System.out.println("開始進入程序..."); //do something System.out.println("程序準(zhǔn)備退出了!"); System.exit(0); //下面這句話將不會打印出來 System.out.println("程序已經(jīng)退出了!");}
但是使用exit方法的本質(zhì)是終止了JVM的運行,如果同時運行了另外一個程序,使用exit方法同樣也會使該程序也終止,要避免此種情況可以使用interrupt()來中斷退出一個獨立運行的過程。對于多線程程序,必須要關(guān)閉各個非守護線程。
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方法退出程序。
System.exit(-1)終止當(dāng)前正在運行的 Java 虛擬機,退出程序。
其中參數(shù)按照慣例,是用非零的參數(shù)碼表示異常終止。
1.
public class TestShutDownHook {
2.
public TestShutDownHook() {
3.
doShutDownWork();
4.
}
5.
private void doShutDownWork() {
6.
Runtime run=Runtime.getRuntime();//當(dāng)前 Java 應(yīng)用程序相關(guān)的運行時對象。
7.
run.addShutdownHook(new Thread(){ //注冊新的虛擬機來關(guān)閉鉤子
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.
}
1、打開eclipse,并且建立java一個工程,具體如下代碼:
addActionListene
(newActionListene
()
{
pu
licvoidactionPe
fo
med(ActionEvente)
{
dispose();
}
});
2、執(zhí)行該程序查看結(jié)果,如圖所示。
return語句和其他控制結(jié)束語句的區(qū)別
Java中結(jié)束語句主要有四類:return,break,continue以及goto。但是goto不常用,所有此文不對此討論。
(1)return語句:是指結(jié)束該方法,繼續(xù)執(zhí)行方法后的語句。
(2)break語句:是指在循環(huán)中直接退出循環(huán)語句(for,while,do-while,foreach),break之后的循環(huán)體里面的語句也執(zhí)行。
(3)continue語句:是指在循環(huán)中中斷該次循環(huán)語句(for,while,do-while,foreach),本次循環(huán)體中的continue之后語句不執(zhí)行,直接跳到下次循環(huán)。
return在try-catch-finally語句中的使用
若在 try或catch語句里面有return語句,finally語句和return語句的執(zhí)行順序問題:
若有finally語句,則無論如何,都會執(zhí)行該語句,在try或catch中的return語句會將它的返回值壓入棧內(nèi),然后執(zhí)行finally語句,當(dāng)finally執(zhí)行完成后,若finally語句里有return語句,則執(zhí)行return語句并結(jié)束。若finally沒有return語句,則返回被保存的棧里的return語句,再執(zhí)行。然而,在壓棧時候,要注意壓入棧內(nèi)的是什么東西,是值本身還是引用,若是引用則引用的值會改變,若是變量值,則不會改變。
下面是一位大牛分析的,很給力,大家一定要仔細看下:finally小特性。
return語句在try-catch-finally中使用情形:
(1)若try執(zhí)行成功后返回,在try和catch里面都執(zhí)行return語句,這樣情況與4相同,但該方法更佳,因為,可以立刻查看出異常的拋出情況。
(2)若只需要在try和catch都執(zhí)行后還需繼續(xù)執(zhí)行相關(guān)語句,則在try-catch所有語句后執(zhí)行return語句;
(3)若catch執(zhí)行后返回,則在catch和所有語句后執(zhí)行return語句;
(4)若try執(zhí)行成功后返回,則在try和全部語句后使用return語句;