并發(fā)(1)--基本的線程機制

1.Executor:Executor(執(zhí)行器)將為你管理Thread對象茄猫,Executor在客戶端和任務(wù)執(zhí)行之間提供了一個間接層骚揍。ExecutorService(具有服務(wù)生命周期的Executor雏节,例如關(guān)閉)知道如何構(gòu)建恰當?shù)纳舷挛膩韴?zhí)行Runnable對象幔翰。
使用如下:

public class Test1 implements Runnable {

    private static int count = 0;

    private final int id = count++;

    public Test1() {
        System.out.println();
    }

    @Override
    public void run() {
        System.out.println(id + " run() method is run");
        Thread.yield();
    }

    public static void main(String[] args) {
        ExecutorService exec = Executors.newCachedThreadPool();
//        ExecutorService exec = Executors.newFixedThreadPool(3);
//        ExecutorService exec = Executors.newSingleThreadExecutor();
        for (int i = 0; i < 5; i++) {
            exec.execute(new Test1());
        }
        exec.shutdown();
    }
}

/*Output:
0 run() method is run
1 run() method is run
2 run() method is run
3 run() method is run
4 run() method is run
*/

對shutdown()方法的調(diào)用可以防止新的任務(wù)被提交給這個Executor,其中:
*CachedThreadPool 將為每個任務(wù)都創(chuàng)建一個線程每辟, 它是合理的Executor的首選饺藤。
*FixedThreadPool將一次性預(yù)先執(zhí)行代價較高昂的線程分配包斑,因而可以顯示線程數(shù)量,這可以節(jié)省時間涕俗,你不用為每個任務(wù)都固定地付出創(chuàng)建線程的開銷罗丰,在線程池中,現(xiàn)有線程在可能的情況下都會被自動復(fù)用再姑。
*SingleThreadExecutor是線程數(shù)量為1的FixedThreadPool萌抵,如果向SingleThreadExecutor提交了多個任務(wù),這些任務(wù)將排隊元镀。

2.*優(yōu)先級
調(diào)度器更傾向于讓讓優(yōu)先級高的線程先執(zhí)行绍填。但是并不是說優(yōu)先級高的線程執(zhí)行時優(yōu)先級低的線程得不到執(zhí)行,也就是說栖疑,優(yōu)先級不會導(dǎo)致死鎖讨永,優(yōu)先級低的線程僅僅是執(zhí)行的頻率較低。在絕大多時間里遇革,所有線程都應(yīng)該以默認的優(yōu)先級運行卿闹,試圖操作線程的優(yōu)先級通常是一種錯誤。
可以使用getPriority()方法獲得線程的優(yōu)先級萝快,使用setPriority(n)方法來設(shè)定線程優(yōu)先級锻霎。

public void run() {
        Thread.currentThread().setPriority(Thread.MIN_PRIORITY);
        System.out.println("hello thread! "+Thread.currentThread().getPriority());
    }

以上Thread.currentThread()可以獲得對驅(qū)動該任務(wù)的Thread對象的引用,設(shè)置線程的優(yōu)先級一般在run()的開頭不封設(shè)定揪漩,在構(gòu)造器中設(shè)定它們不會有任何好處旋恼,因為Executor在此刻還沒有開始執(zhí)行任務(wù)
3.讓步
當任務(wù)已經(jīng)完成的差不多了覺得可以讓其他線程工作了的時候可以給線程調(diào)度機制一個暗示:你的工作已經(jīng)做得差不多了,可以讓其他線程使用cpu了奄容,這個暗示將通過調(diào)用yield()方法(不過這只是一個暗示冰更,沒有任何機制保證它將被采納)产徊。當調(diào)用yield()時你也是建議具有相同優(yōu)先級的其他線程可以運行。
4.后臺線程
所謂后臺線程冬殃,是指在程序運行時在后臺提供一種通用服務(wù)的線程囚痴,并且這種線程不屬于程序中不可或缺的一部份。在線程啟動之前調(diào)用setDaemon()方法可以將線程設(shè)置為后臺線程审葬,當所有非后臺線程結(jié)束時,程序也就終止了奕谭,同時會殺死進程中的所有后臺線程涣觉,后臺線程在不執(zhí)行finally子句的時候就會終止其run()方法

for(int i = 0; i<10; i++) {
  Thread daemon = new Thread(new Test1);
  daemon.setDaemin(true);
  daemon.start();
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末血柳,一起剝皮案震驚了整個濱河市官册,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌难捌,老刑警劉巖膝宁,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異根吁,居然都是意外死亡员淫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門击敌,熙熙樓的掌柜王于貴愁眉苦臉地迎上來介返,“玉大人,你說我怎么就攤上這事沃斤∈バ” “怎么了?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵衡瓶,是天一觀的道長徘公。 經(jīng)常有香客問我,道長哮针,這世上最難降的妖魔是什么关面? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮诚撵,結(jié)果婚禮上缭裆,老公的妹妹穿的比我還像新娘。我一直安慰自己寿烟,他們只是感情好澈驼,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著筛武,像睡著了一般缝其。 火紅的嫁衣襯著肌膚如雪挎塌。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天内边,我揣著相機與錄音榴都,去河邊找鬼。 笑死漠其,一個胖子當著我的面吹牛嘴高,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播和屎,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼拴驮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了柴信?” 一聲冷哼從身側(cè)響起套啤,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎随常,沒想到半個月后潜沦,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡绪氛,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年唆鸡,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片钞楼。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡喇闸,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出询件,到底是詐尸還是另有隱情燃乍,我是刑警寧澤,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布宛琅,位于F島的核電站刻蟹,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏嘿辟。R本人自食惡果不足惜舆瘪,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望红伦。 院中可真熱鬧英古,春花似錦、人聲如沸昙读。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至唠叛,卻和暖如春只嚣,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背艺沼。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工册舞, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人障般。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓调鲸,卻偏偏與公主長得像,于是被迫代替她去往敵國和親剩拢。 傳聞我的和親對象是個殘疾皇子线得,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內(nèi)容