A. java 中怎麼判斷某一線程是否運行
可以調用 Thread.isAlive() 判斷, 當然也可以設置一個標記, 在那個線程結束之前設置標記。
/**
* Tests if this thread is alive. A thread is alive if it has
* been started and has not yet died.
* @return <code>true</code> if this thread is alive;
* <code>false</code> otherwise.
*/
Thread.isAlive()
B. Java如何判斷線程池所有任務是否執行完畢
給你一個例子參考下
importjava.util.concurrent.ExecutorService;
importjava.util.concurrent.Executors;
publicclassTest{
publicstaticvoidmain(Stringargs[])throwsInterruptedException{
ExecutorServiceexe=Executors.newFixedThreadPool(50);
for(inti=1;i<=5;i++){
exe.execute(newSubThread(i));
}
exe.shutdown();
while(true){
if(exe.isTerminated()){
System.out.println("結束了!");
break;
}
Thread.sleep(200);
}
}
}
上面是主線程的代碼,創建了一個能同時執行2個線程的線程池,並投入5個線程,當5個線程都執行完畢後列印---「結束了!」字元串。
exe.shutdown();該方法在加入線程隊列的線程執行完之前不會執行。
exe.isTerminated();當shutdown()或者shutdownNow()執行了之後才會執行,並返回true。
在上面的代碼中必須有exe.isTerminated()的判斷,否則在投入5個線程到線程池後會直接列印:「結束了」。不能達到我們想要的效果。
通過while(true)循環判斷exe.isTerminated()重生之大文豪的值,為了防止過多的判斷浪費資源,可設置線程睡眠Thread.sleep(200);
正是由於這個睡眠,所以當所有線程池中的線程都執行完後,有可能延遲200ms才執行"結束了"語句。這個參數越小延遲越小,結果越准確。
C. java判斷線程是否存活有幾種方法
void shutdown()
啟動一次順序關閉,執行以前提交的任務,但不接受新任務。如果已經關閉,則調用沒有其他作用。
拋出:
SecurityException - 如果安全管理器存在並且關閉,此 ExecutorService 可能操作某些不允許調用者修改的線程(因為它沒有保持RuntimePermission("modifyThread")),或者安全管理器的 checkAccess 方法拒絕訪問。
isTerminated
boolean isTerminated()
如果關閉後所有任務都已完成,則返回 true。注意,除非首先調用 shutdown 或 shutdownNow,否則 isTerminated 永不為 true。
返回:
如果關閉後所有任務都已完成,則返回 true
D. JAVA 如何檢查線程是否執行
可以使用類變數判斷 。示例如下:
classA{
staticbooleanaStop=false;
staticvoidtest(){
newAThread().start();
while(!aStop){
}
System.out.println("AThreadstoped.");
}
classAThreadextendsThread{
publicvoidrun(){
/////////////////////////
aStop=true;
}
}
}
E. java 判斷是不是同一個線程
每個線程都會由系統分配唯一的線程標識(線程id),一般是調用.get什麼來獲取id,具體方法查api文檔,這種拿來主義的習慣不好,這個查一下api就知道,一兩分鍾的事
F. 急求!如何判斷java 線程相等,用equals還是==,舉個例子
用
equals
,判斷線程是否相等,本質上是判斷兩個
Thread
的變數是否相等,而在Java中,每一個線程都只有唯一一個Thread
的對象,所以需要使用
equals。
G. java 如何判斷一個線程結束
線程結束時等待也就結束了
------解決方案--------------------------------------------------------
waitforsingleobject當然可以。
或者設一全局變數,線程結束就將其置為某值。在別處讀取該值,就可以判斷線程是否結束了。
------解決方案--------------------------------------------------------
wait_object_0
表示這個線程已經退出了,wait_timeout是這個線程在此函數返回時候還沒退出,但是設置的等待時間已經到了,wait_abandoned是所等待的對象是mutex而非thread,
H. java怎麼判斷一個線程是否在運行狀態
不建議
強制關閉
有時候強制關閉會拋出異常
或者根本關閉不了
你在線程中設置個boolean
變數
flag
加個判斷
你想關閉的時候控制一下
當flag==false的時候
就跳出線程
2樓的
如果線程不阻塞,你調用interrup方法根本不起作用
只有阻塞時才起作用