當前位置:首頁 » 編程語言 » java終止程序

java終止程序

發布時間: 2023-09-10 04:25:31

java中如何正確而優雅的終止運行中的線程

Java中終止線程的方式主要有三種:

1、使用stop()方法,已被棄用。原因是:stop()是立即終止,會導致一些數據被到處理一部分就會被終止,而用戶並不知道哪些數據被處理,哪些沒有被處理,產生了不完整的「殘疾」數據,不符合完整性,所以被廢棄。So, forget it!

2、使用volatile標志位

看一個簡單的例子:

首先,實現一個Runnable介面,在其中定義volatile標志位,在run()方法中使用標志位控製程序運行

{

//定義退出標志,true會一直執行,false會退出循環
//使用volatile目的是保證可見性,一處修改了標志,處處都要去主存讀取新的值,而不是使用緩存
publicvolatilebooleanflag=true;

publicvoidrun(){
System.out.println("第"+Thread.currentThread().getName()+"個線程創建");

try{
Thread.sleep(1000L);
}catch(InterruptedExceptione){
e.printStackTrace();
}

//退出標志生效位置
while(flag){
}
System.out.println("第"+Thread.currentThread().getName()+"個線程終止");
}
}

然後,在main()方法中創建線程,在合適的時候,修改標志位,終止運行中的線程。

publicclassTreadTest{
publicstaticvoidmain(String[]arg)throwsInterruptedException{
MyRunnablerunnable=newMyRunnable();

//創建3個線程
for(inti=1;i<=3;i++){
Threadthread=newThread(runnable,i+"");
thread.start();
}
//線程休眠
Thread.sleep(2000L);
System.out.println("——————————————————————————");
//修改退出標志,使線程終止
runnable.flag=false;
}
}

最後,運行結果,如下:

第1個線程創建
第2個線程創建
第3個線程創建
--------------------------
第2個線程終止
第1個線程終止
第3個線程終止

3、使用interrupt()中斷的方式,注意使用interrupt()方法中斷正在運行中的線程只會修改中斷狀態位,可以通過isInterrupted()判斷。如果使用interrupt()方法中斷阻塞中的線程,那麼就會拋出InterruptedException異常,可以通過catch捕獲異常,然後進行處理後終止線程。有些情況,我們不能判斷線程的狀態,所以使用interrupt()方法時一定要慎重考慮。

㈡ java怎麼強行終止程序

在java程序中,可以使用java.lang.System的exit方法來終止程序的執行,

12345678

public static void main(String[] args) { System.out.println("開始進入程序..."); //do something System.out.println("程序准備退出了!"); System.exit(0); //下面這句話將不會列印出來 System.out.println("程序已經退出了!");}

但是使用exit方法的本質是終止了JVM的運行,如果同時運行了另外一個程序,使用exit方法同樣也會使該程序也終止,要避免此種情況可以使用interrupt()來中斷退出一個獨立運行的過程。對於多線程程序,必須要關閉各個非守護線程。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線程已經退出了,但是不影響其他線程運行!"); }

只有在程序非正常退出時,才使用exit方法退出程序。

㈢ java中終止程序的執行

想直接整個程序的結束用System.exit(0);
如果是在for循環,while或if中嘗試用return ,break等

㈣ 如何用Java關閉一個進程

解決這個問題,要看這個進程是java程序自定義的進程,還是操作系統的進程,操作系統的進程,又可以分為windows進程和Linux進程

一、針對操作系統的進程:

1,首先java用戶,要具有操作進程的許可權

2. 針對windows操作系統的進程,比如QQ進程:

Stringcommand="taskkill/f/imQQ.exe";
Runtime.getRuntime().exec(command);

其中:taskkill 是命令名稱,/f /im 是參數,QQ.exe是進程的可執行文件。

3.針對Linux操作系統

Stringcommand="kill/f/imQQ.exe";
Runtime.getRuntime().exec(command);

二、在Java程序中自定義的進程

思路:在線程中設置一個標志變數,當這個變數的值在外界被改變的時候,有機會結束運行的線程

publicclassT{
publicstaticvoidmain(String[]args){
//啟動線程
MyThreadthread=newMyThread();
newThread(thread).start();

//你的其它的工作,此時線程在運行中
//你不想讓線程幹活了,停掉它
//注意,這只是一個標志,具體線程何時停,並不能精確控制
thread.allDone=true;
}
}

{

booleanvolatileallDone=false;
publicvoidrun(){

//每次循環都檢測標志
//如果設置停止標志時已經在循環里
//則最長需要等待一個循環的時間才能終止
while(!allDone){
//循環里的工作
}
}
}

㈤ java停止運行怎麼解決

在java程序中,可以使用java.lang.System的exit方法來終止程序的執行,publicstaticvoidmain(String[]args){System.out.println("開始進入程序");//dosomethingSystem.out.println("程序准備退出了!");System.exit(0);//下面這句話將

熱點內容
python整型數組 發布:2025-03-11 18:40:35 瀏覽:617
為什麼手機密碼會自己改 發布:2025-03-11 18:39:17 瀏覽:849
c數據結構演算法 發布:2025-03-11 18:09:53 瀏覽:847
有道安卓怎麼用屏幕取詞 發布:2025-03-11 17:56:22 瀏覽:924
linux日誌文件查看 發布:2025-03-11 17:32:50 瀏覽:680
音波演算法 發布:2025-03-11 17:18:57 瀏覽:407
訪問共享無法訪問 發布:2025-03-11 17:06:50 瀏覽:293
伺服器web環境搭建 發布:2025-03-11 17:03:46 瀏覽:338
python語句塊 發布:2025-03-11 16:49:30 瀏覽:609
怎麼伺服器放電 發布:2025-03-11 16:48:03 瀏覽:786