class MyThread extends Thread {
private int money;
public void run() {
System.out.println("你好中國!");
}
void method1() {
}
}
MyThread mMythread = new MyThread();1 執行緒的生命周期 比如進入 死亡狀態 (概念:執行緒執行完畢或者是例外退出,該執行緒結束生命周期。),難道mMythread 就在記憶體中被回收了嗎?
實際測驗的結果是,mMythread .start(); 運行后,run()執行完了,mMythread 這個執行緒就進入死亡狀態的生命周期了,但是mMythread 這個實體在記憶體中仍然存在。,所以我覺得執行緒的生命周期和它的實體在記憶體中存不存在是不同的概念。
2 這個 Thread 的實體 mMythread 和普通類的實體有什么區別?
MyThread是否可以看做除了run方法很特別之外, 它的成員變數(int money),普通方法method1(); 都和普通類一樣?
uj5u.com熱心網友回復:
1. 不同概念,執行緒類實體與執行緒的關系,有點像程式與行程的關系,并不是行程掛了,程式就丟了。。2. 和普通類一樣沒區別
uj5u.com熱心網友回復:
執行緒的本質是新起一個執行緒堆疊開執行一個函式。因為java一切皆物件,執行執行緒也得用類包裝。你看需要可能執行緒啟動就一個函式作為入口。你也可以認為run是java執行緒執行的入口。uj5u.com熱心網友回復:
我認為,作為執行緒Mythread,他的生命周期,是到死亡就結束了;但是同樣的,他還是一個類的實體,作為一個類,他的生命周期,即回收,應該由垃圾回收器來處理,這應該是不同的任務。就跟生物一樣,從出生到死亡,死亡之后沒有生命了,但是尸體還在,而物體分解,就交給微生物處理uj5u.com熱心網友回復:
1.Thread類在初始狀態(new了沒start)和終止狀態,如果沒人參考就會被垃圾回收。2.沒區別。
總結:java中所有類都一樣。要說Thread特殊吧,可能只有一個,就是執行緒運行的時候即使沒任何代碼參考他,也不會被垃圾回收(推測,可能虛擬機內部有對運行中的執行緒參考)。Thread類start之后,使用了作業系統的執行緒資源。作業系統的執行緒和Thread類完全是2個概念。Thread類只是通過作業系統的API封裝使用了作業系統的執行緒而已。這跟Socket類跟作業系統socket,File類封裝了作業系統的檔案概念一樣。
uj5u.com熱心網友回復:
thread的實體和其他類的實體沒有區別 只是做的事情不一樣而已 看一下start方法 會去調一個本地方法start0轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/46133.html
標籤:Java SE
下一篇:jsoup爬蟲412報錯怎么解?
