1.優先級的映射。
jvm爲線程提供了大概9個優先級,但是不同的操作系統提供的優先級等級也不同,windows沒到9個,linux比較多,solaris比linux還要多,而且線程或進程的調度是交由操作系統cpu調度策略調度的,如果你是windows操作系統,假如它只提供了兩種優先級,那麼你設置的jvm優先級1~4可能映射到操作系統的1優先級,而5~9映射到操作系統的2優先級,所以1~4的效果是一樣的,5~9的效果是一樣的。
這個問題在深入理解jvm中,多線程優化那部分有介紹!
2.優先級的設置
- 線程優先級並不能保證線程的執行順序,優先級高的並不一定先執行,優先級低的也不一定不執行
- 不要試圖使用優先級來控制線程的執行順序
線程優先級的設置,並不能指定線程的運行順序,這個是由操作系統調度的。
線程優先級不能作爲程序正確性的依賴,因爲操作系統可以完全不用理會JAVA線程對於優先級的設定。——->《JAVA併發編程基礎》