關閉java進程
⑴ java如何關閉或者打開一個指定的windows進程
Process java.lang.Runtime.exec(String command);
在單獨的進程中執行指定的字元串命令
java.lang.Process
ProcessBuilder.start() 和 Runtime.exec 方法創建一個本機進程,並返回 Process 子類的一個實例,該實例可用來控制進程並獲取相關信息。Process 類提供了執行從進程輸入、執行輸出到進程、等待進程完成、檢查進程的退出狀態以及銷毀(殺掉)進程的方法。
創建進程的方法可能無法針對某些本機平台上的特定進程很好地工作,比如,本機窗口進程,守護進程,Microsoft Windows 上的 Win16/DOS 進程,或者 shell 腳本。創建的子進程沒有自己的終端或控制台。它的所有標准 io(即 stdin,stdout,stderr)操作都將通過三個流 (getOutputStream(),getInputStream(),getErrorStream()) 重定向到父進程。父進程使用這些流來提供到子進程的輸入和獲得從子進程的輸出。因為有些本機平台僅針對標准輸入和輸出流提供有限的緩沖區大小,如果讀寫子進程的輸出流或輸入流迅速出現失敗,則可能導致子進程阻塞,甚至產生死鎖。
當沒有 Process 對象的更多引用時,不是刪掉子進程,而是繼續非同步執行子進程。
對於帶有 Process 對象的 Java 進程,沒有必要非同步或並發執行由 Process 對象表示的進程
⑵ 安裝Java時提示「關閉程序,以便繼續」。要求我結束的程序名稱是「開始」。請問怎麼辦。
開始,是指電腦的資源管理器,也就是我們的桌面了。
打開任務管理器,在「進程」中找到 Explorer.exe 「結束進程」 終止它,等安裝過程繼續之後再從任務管理器中的 "文件「 》 新建任務》 輸入 explorer.exe.
出現這個錯誤,有可能是你剛剛卸載了以前的 Java,它的 DLL 需要你重啟電腦才能刪除掉,重啟前就可能是這個錯誤表示有些東西鎖住了。
⑶ 如何用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程序
Ctrl+Shift+Esc打開任務管理器,選擇進程,找到java進程,關掉它
⑸ Linux 下的Java進程自己關閉,怎麼解
Linux中java進程自己關閉,有2種可能:
1、是程序本身出現bug,造成java程序崩潰,進程失效;
2、是系統服務設置了自我監控的機制,java佔用資源過多的話,關閉了java進程來釋放佔用的資源。
⑹ 用怎樣的JAVA代碼結束指定進程
1 線程正常執行完畢,正常結束。 也就是讓run方法執行完畢,該線程就會正常結束。 2 監視某些條件,結束線程的不間斷運行。 然而,常常有些線程是伺服線程。它們需要長時間的運行,只有在外部某些條件滿足的情況下,才能關閉這些線程。 通常,它們執行在一個while(true)的死循環中。 如: publicvoid run() { while(true){ someWork(); if(finished){ break; } try { Thread.sleep(10000); } catch (InterruptedException e) { /* TODO自動生成 catch 塊 * */ e.printStackTrace(); } } } 我們可以在while死循環內,每次循環時,察看外部條件,看看是否需要關閉當前線程。如果是,就break,跳出死循環,或者是拋出異常,跳出死循環,結束線程。 3 捕獲InterruptedException 運行時異常,中斷當前線程。 有些執行伺服任務的線程,在while(true)這樣的死循環內部,是一個阻塞中的方法。此時,就不能採用第二種方法了。因為,當該方法沒有返回時,該線程一直處於阻塞當中,根本無法執行其他語句。 此時,就需要調用該線程的interrupt方法,產生一個InterruptedException運行時異常,是阻塞中的那個方法拋出這個異常,從而讓我們有機會結束這個線程的執行。 如: publicvoid run() { while(true){ try { // getSendMessages 是BlockingQueue類。它的take方法將會阻塞! responseMessage = this.getSendMessages().take(); } catch (InterruptedException e1) { thrownew RuntimeException(); //或者break; } someWork(); } 一個外部的Thread 對象 指向這個線程。 需要結束這個線程時,只需要調用thread對象的interrupt() 方法,就會在responseMessage = this.getSendMessages()。take(); 這條語句中產生一個InterruptedException異常,從而結束該線程的阻塞狀態,通過拋出異常,或者break跳出死循環,結束這個線程。
⑺ java編程:結束代碼進程
首先,Java不允許你控制資源的釋放,所有的資源釋放都是由JVM來管理的,除非你退出JVM。
當你對資源調用dispose方法時,實際上是將資源的狀態置為已廢棄,gc會自動來將資源釋放掉。
其次,setDefaultCloseOperation()方法是用來設置用戶在此窗體上發起 "close" 時默認執行的操作。其中DISPOSE_ON_CLOSE調用任意已注冊WindowListener的對象後隱藏並釋放該窗體;EXIT_ON_CLOSE則使用System exit方法退出JVM。
dispose()是Window類的方法,並非Container類,它的JDK APIDOC裡面這樣描述:
釋放由此 Window、其子組件及其擁有的所有子組件所使用的所有本機屏幕資源。即這些 Component 的資源將被破壞,它們使用的所有內存都將返回到操作系統,並將它們標記為不可顯示。
通過隨後調用 pack 或 show 重新構造本機資源,可以再次顯示 Window 及其子組件。重新創建的 Window 及其子組件的狀態與釋放 Window 時這些對象的狀態一致(不考慮這些操作之間的其他更改)。
註:當 Java 虛擬機 (VM) 中最後的可顯示窗口被釋放後,虛擬機可能會終止。
也就是說,調用dispose()方法是將對象佔用的本地屏幕資源(screen resources)釋放,對象本身並沒有釋放,只是底層的對應點已經釋放了,所以仍然是可用的。
當然,調用底層本地屏幕資源已經被釋放的對象可能會出現一些錯誤,有時會報一個SWTException: Widget is disposed...。
如果你的程序已經沒有其他線程在運行的話,當所有的窗口都被dispose了之後,JVM也會退出。
你的問題中,只需要將該子窗口dispose掉,並且將對該窗口的引用置為null,不用管它是否還能使用,gc會自動將對象釋放的(不會立即釋放,對象有它的生命周期,gc會依照自己的演算法進行資源回收)。
⑻ unix下如何啟動和關閉一個java程序
用Runtime類可以執行DOS命令來執行一個進程,如下就是打開記事本:
try {
Runtime runtime = Runtime.getRuntime();
runtime.exec("notepad.exe");
} catch (IOException e) {
e.printStackTrace();
}
Thread是線程,不是進程,樓主可以去查查線程和進程的區別。
運行main函數時,就啟動了一個java.exe進程,對應的dos命令就是java xxx
樓主可以用Runtime 來執行,java xxx,只要路徑正確,就會啟動另一個java進程。
⑼ oracle 運行關閉java 進程會怎麼樣 ,會影響oracle 運行嗎
oracle是獨立運行的
一些java的項目運行依賴資料庫oracle,但是oracle不依賴java
關閉oracle,影響java
關閉java不會影響oracle
⑽ java進程怎麼安全關閉
就是有個main方法在死循環的查數據處理數據。然後要更新代碼,不能直接kill呀,kill會把正在處理的數據弄丟,就需要在個監控,可以再跑的過程里讓他停止讀取數據,然後把內存里的數據處理完了再關閉