1.
南開網(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)建站。
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)的運(yùn)行時(shí)對象。
7.
run.addShutdownHook(new Thread(){ //注冊新的虛擬機(jī)來關(guān)閉鉤子
8.
@Override
9.
public void run() {
10.
//程序結(jié)束時(shí)進(jìn)行的操作
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.
}
方法一:
類 JFrame
javax.swing.JFrame
JFrame中的方法void setDefaultCloseOperation(int)可以設(shè)置
以下為改方法的用法:
setDefaultCloseOperation
public void setDefaultCloseOperation(int operation)設(shè)置用戶在此窗體上發(fā)起
"close" 時(shí)默認(rèn)執(zhí)行的操作。必須指定以下選項(xiàng)之一:
DO_NOTHING_ON_CLOSE(在 WindowConstants 中定義):不執(zhí)行任何操作;要求程序在已注冊的
WindowListener 對象的 windowClosing 方法中處理該操作。
HIDE_ON_CLOSE(在 WindowConstants 中定義):調(diào)用任意已注冊的 WindowListener
對象后自動(dòng)隱藏該窗體。
DISPOSE_ON_CLOSE(在 WindowConstants 中定義):調(diào)用任意已注冊 WindowListener
的對象后自動(dòng)隱藏并釋放該窗體。
EXIT_ON_CLOSE(在 JFrame 中定義):使用 System exit
方法退出應(yīng)用程序。僅在應(yīng)用程序中使用。
默認(rèn)情況下,該值被設(shè)置為 HIDE_ON_CLOSE。更改此屬性的值將導(dǎo)致激發(fā)屬性更改事件,其屬性名稱為
"defaultCloseOperation"。
注:當(dāng) Java 虛擬機(jī) (VM) 中最后一個(gè)可顯示窗口被釋放后,虛擬機(jī)可能會終止
要實(shí)現(xiàn)你說的,應(yīng)該采用
setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
方法二:
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
public class Test extends JFrame {
public Test(){
this.setTitle("title");
this.setSize(300,200);
this.setLocation(100,100);
//設(shè)置關(guān)閉時(shí)什么也不做
this.setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
//監(jiān)聽關(guān)閉按鈕的點(diǎn)擊操作
this.addWindowListener(new WindowAdapter(){
//new 一個(gè)WindowAdapter 類 重寫windowClosing方法
//WindowAdapter是個(gè)適配器類 具體看jdk的幫助文檔
public void windowClosing(WindowEvent e) {
//這里寫對話框
if(JOptionPane.showConfirmDialog(null,
"退出","提
示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE)==JOptionPane.YES_OPTION){
System.exit(0);
}
}
});
this.setVisible(true);
}
public static void main(String[] args) {
new Test();
}
}
System.exit(-1)終止當(dāng)前正在運(yùn)行的 Java 虛擬機(jī),退出程序。
其中參數(shù)按照慣例,是用非零的參數(shù)碼表示異常終止。
方案操作如下:
(1)讓程序在一個(gè)單獨(dú)的線程中運(yùn)行,然后在終止時(shí),可以用線程的終止方法來結(jié)束它。
(2)退出Java程序時(shí)盡量不要使用java.lang.System的exit方法。Exit?方法可以終止JVM,從而終止程序,但如果同時(shí)運(yùn)行了另一個(gè)Java程序,使用exit方法就會讓該程序也關(guān)閉,這顯然不是希望看到的情況?。。?!
要退出Java程序,可以使用destory()退出一個(gè)獨(dú)立運(yùn)行的過程。對于多線程程序,必須要關(guān)閉各個(gè)非守護(hù)線程。
只有在程序非正常退出時(shí),才使用exit方法退出程序
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í)行。然而,在壓棧時(shí)候,要注意壓入棧內(nèi)的是什么東西,是值本身還是引用,若是引用則引用的值會改變,若是變量值,則不會改變。
下面是一位大牛分析的,很給力,大家一定要仔細(xì)看下:finally小特性。
return語句在try-catch-finally中使用情形:
(1)若try執(zhí)行成功后返回,在try和catch里面都執(zhí)行return語句,這樣情況與4相同,但該方法更佳,因?yàn)?,可以立刻查看出異常的拋出情況。
(2)若只需要在try和catch都執(zhí)行后還需繼續(xù)執(zhí)行相關(guān)語句,則在try-catch所有語句后執(zhí)行return語句;
(3)若catch執(zhí)行后返回,則在catch和所有語句后執(zhí)行return語句;
(4)若try執(zhí)行成功后返回,則在try和全部語句后使用return語句;