作用:sleep方法可以讓執行緒進入waiting狀態,並且不占用cpu資源,但是不釋放鎖,直到規定時間後再執行,休眠期間如果被中斷,會丟擲異常
特定:不釋放鎖,指的是不釋放synchronized和lock的鎖,
面試問題:wait方法和sleep方法的異
相同:不同:
join方法
1.作用:因為新的執行緒加入了我們,所以我們要等他執行完再執行
2.用法:主線程等待子執行緒執行完
3遇到中斷:是主線程被中斷,主線程丟擲異常,主線程執行完畢之後,期間如果子執行緒進行了睡眠,導致子執行緒還沒有結束,所以在處理中斷的時候,應該將子執行緒內容進行終止,解決辦法是:將中斷傳遞給子執行緒,用thread.interrupt()
4.原理:
public
class thread implements runnable
}public final synchronized void join(long millis)
throws interruptedexception
if (millis == 0)
} else
wait(delay);
now = system.currenttimemillis() - base;}}
}
內部是乙個用synchronized修飾的方法,根據傳入的引數進行邏輯判斷,如果沒有傳入了引數,呼叫wait(0)進行一直等待,直到被喚醒,如果傳入了引數將對引數進行運算(加減),然後呼叫有引數的wait方法,進入阻塞狀態,但是方法內部沒有進行notify過程,而是thread類等run方法執行之後,自動呼叫notify來進行喚醒。
yield方法
1.作用:釋放我們的cpu時間片,執行緒的狀態依然是runnable,不會釋放鎖,不會進入阻塞狀態
2.定位:jvm不保證遵循
3.yield和sleep的區別
呼叫sleep方法,會認為進入阻塞狀態,不會對其進行排程,yield是暫時將自己的排程權讓給別人,但是又可以立即進入競爭狀態,隨時可能被再度呼叫。
守護執行緒
作用:給使用者執行緒提供服務
守護執行緒和普通執行緒的區別:
1.整體無區別
2.使用者執行緒能夠影響到jvm的退出,而守護執行緒不會影響jvm的退出
3.普通執行緒執行的是我們的邏輯,而守護執行緒服務於使用者執行緒
關於springCloud中服務方呼叫方的配置
1.我方是服務方,別人呼叫我方,由我方提供位址,不需要呼叫feign。那麼,位址資訊在resourceconfig裡面做配置,resourceconfig中配置的位址相當於是把請求位址暴露給對方,並在此位址請求時對他放行。configuration enableresourceserver publ...
Container DataItem幾種方式
在繫結資料時經常會用到這個句程式 databinder.eval container.dataitem,x 或者 databinder.eval container,dataitem.x 今天又學到一種,而且微軟也說這種方法的效率要比以上兩種高。datarowview container.datai...
Linux Carmer driver註冊方法
最近又開始看carmer的驅動了,在linux下通常實用video4linux框架來實現video capture camera capture等功能,先說一下裝置註冊部分,ov7670.c中,註冊方法如下 static struct v4l2 i2c driver data v4l2 i2c da...