1. 程式人生 > >多執行緒筆記——1

多執行緒筆記——1

在學習多執行緒的時候首先我們要清楚一線問題:

1程序:系統分配資源和排程的獨立單位,執行緒: 程序中獨立執行的子任務

2多執行緒的實現方式  整合Thread類和實現Runnable介面

3執行緒的執行順序與呼叫順序無關的,start()方法會通知“執行緒規劃器”,由它啟動一個執行緒來執行run()方法

4Thread類其實也是實現的Runnable介面 其原始碼中定義為: class Thread implements Runnable

5“互斥區”“臨界資源”指的是加鎖的程式碼塊

6println(i++)存在的執行緒安全問題,println是安全的,但是i++的執行是在println之前的

7currentThread()返回的是當前正在被哪個執行緒呼叫的資訊

8isAlive() 是判斷執行緒是否還活著,即已啟動,尚未終止的執行緒

9sleep()是讓當前執行緒休眠,getId()是獲取執行緒的唯一標示

10 停止執行緒  Thread.stop() 暴力停止,釋放鎖後會產生不良後果,不建議使用。

                      interrupt,並不是停止,只是打了個停止的標記,但是執行緒還在 執行

                      判斷執行緒的狀態 this.interrupted執行後標誌清除為false

                                                this.isInterrupted 不清除標誌

                     使用異常法來終止執行緒.,即對當前執行緒的狀態進行判斷,如果標記為停止就丟擲一個異常,終止執行緒

                     如果執行緒在sleep狀態下被停止,則會丟擲異常

                    使用return方法來停止執行緒

11暫停一個執行緒

suspend()暫停 resume喚醒  缺點獨佔資源

12 yield方法的作用是讓執行緒放棄當前的cpu資源,但是可能剛放棄立馬就獲得

13 執行緒的優先順序

     分為1~10這10個等級,若果不在這個範圍,就會丟擲IllegalArgumentException()

    jdk有三個常亮來定義優先順序

             MIN_PRIORITY =1

            NORM_PRIORITY=5

           MAX_PEIORITY =10

14 守護執行緒

    最典型的就是gc