方法1:
publicclass
threadcreat
});}
}
方法2:新建乙個類繼承thread類,thread類本身實現了runnable介面,可以通過繼承重寫thread類的run方法(實現runnable介面而來)來寫執行緒的執行體, 然後例項化這個新建的類來新建乙個執行緒;
1.同步阻塞(想要獲得鎖資源得不到)。
2.呼叫sleep()方法進入睡眠直到超過睡眠時間。
3.等待阻塞(呼叫執行緒的wait()方法)此次需要其他執行緒來喚醒
worker :每個worker擁有乙個執行緒。可以設定執行緒池中線程的個數(有核心執行緒數和最大執行緒數)。當任務多於執行緒池的核心執行緒個數時(在這之前每有乙個任務就新建乙個執行緒)就會在佇列裡排隊。等待worker去佇列中拉取任務並執行。執行緒池的執行緒也有一定的執行緒存活時間,(當暫時沒有任務了總不能一直讓執行緒在那占用資源啊)
執行緒池的最大執行緒數:當佇列滿了就新建執行緒,不能超過最大執行緒數
執行緒池的執行緒空閒存活時間:當執行緒數大於核心執行緒時,停止超過空閒時間的執行緒
執行緒池執行緒工廠
執行緒池的任務佇列:arrayblockingqueue有界佇列,linkedblockingqueue無界佇列,同步佇列synchronousqueque(沒有容量,有任務必須立刻執行 或者拒絕,所以同步),優先順序佇列rrioritybockingqueque(無界)
頂層executor介面,
繼承了executor的executorservice介面,
實現了executorservice的abstractexecutorservice類,
繼承了abstractexecutorservice的executorthreadpool。
方法描述和特點
executors.newcachedthreadpool();
建立乙個執行緒池,緩衝池容量大小為integer.max_value。可以讓任務立刻執行,也可重用執行緒,但是不能控制併發數
executors.newsinglethreadexecutor();
建立容量為1的執行緒池,無界佇列,可以讓任務按順序執行
executors.newfixedthreadpool(
int
);
建立固定容量大小的執行緒池,可以控制併發數,重用執行緒
實際上可以使用threadpoolexecutor的構造方法配置引數實現自己想要的執行緒池。
多執行緒相關
多執行緒示例 public class threadtest start new thread new runnable start new thread new runnable start class print public void print2 public void print3 上面的...
多執行緒相關
1.synchronized同步方法 方法內的變數為執行緒安全的 執行緒中的例項變數非執行緒安全,易出現髒讀,方法上加synchronized關鍵字 多個執行緒訪問同乙個物件的同步方法時,執行緒安全 synchronized取得的鎖都是物件鎖,而不是把一段 或者方法當作鎖 多個執行緒訪問多個物件的同...
多執行緒 執行緒池相關
銀行有四個視窗辦業務,好比四個cpu。如果只開乙個執行緒的話,相當於所有辦業務的人都排成一隊在乙個視窗辦業務,或者說每個人都必須等上乙個人辦完業務之後隨機選乙個視窗,總之就是序列乙個個來。所以這體現了多執行緒優點的就是可以充分利用現在計算機配置多核cpu的硬體特性,把多核cpu利用起來提高任務的處理...