多線程的初級(jí)使用寸宵,新手福利

多線程的初級(jí)使用崖面,新手福利

多線程的使用可以明顯的提高代碼的運(yùn)行效率,尤其在耗時(shí)操作時(shí)候梯影,比如獲取網(wǎng)絡(luò)請(qǐng)求數(shù)據(jù)巫员、視頻解碼,圖片加載等等方面甲棍,下面我就把多線程的常用方法給簡(jiǎn)單介紹一下

多線程分類(lèi):

同步(sy) 異步(asy)
串行 同一線程挨個(gè)執(zhí)行 其他線程挨個(gè)執(zhí)行
并行 同一線程挨個(gè)執(zhí)行 多個(gè)線程同時(shí)執(zhí)行

NSThread的使用方法:

- (void)viewDidLoad {
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    
    //Nsthread 使用方法
    //使用方法一
    [NSThread detachNewThreadWithBlock:^{
        [self test_01];
    }];
    //使用方法二
    NSThread *thread =[[NSThread alloc]initWithTarget:self selector:@selector(test_02) object:nil];
    [thread start];
}


-(void)test_01{
    for (int i = 0; i<1000; i++) {
        NSLog(@"**********");
    }
}
-(void)test_02{
    for (int i = 0; i<1000; i++) {
        NSLog(@"##########");
    }
}

下面是控制臺(tái)輸出:

2017-08-08 09:33:21.239 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102055] ##########
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102055] ##########
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.240 Thread_GCDDeom[2467:102055] ##########
2017-08-08 09:33:21.241 Thread_GCDDeom[2467:102054] **********
2017-08-08 09:33:21.241 Thread_GCDDeom[2467:102055] ##########

NSThread的其他用法還有:(這里不做解釋)

+ (void)sleepUntilDate:(NSDate *)date;
+ (void)sleepForTimeInterval:(NSTimeInterval)ti;
+ (void)exit;
+ (double)threadPriority;   //獲取線程的優(yōu)先級(jí)
+ (BOOL)setThreadPriority:(double)p; //這個(gè)是設(shè)置線程的優(yōu)先級(jí)

從上面的例子可以看得出简识,NSThread是蘋(píng)果封裝好的多線程,他是異步操作的

GCD的使用方法:

//測(cè)試一:創(chuàng)建一個(gè)同步線程---串行隊(duì)列(兩種方法創(chuàng)建串行隊(duì)列)
//    dispatch_queue_t queue_01 =dispatch_queue_create("queue01", NULL);
    dispatch_queue_t queue_01 =dispatch_queue_create("queue01", DISPATCH_QUEUE_SERIAL);
    dispatch_sync(queue_01, ^{
        [self test_01];
    });
    dispatch_sync(queue_01, ^{
        [self test_02];
    });

運(yùn)行結(jié)果:

2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########

//    //測(cè)試二:創(chuàng)建一個(gè)同步線程----并行隊(duì)列
    dispatch_queue_t queue_02 =dispatch_queue_create("queue02", DISPATCH_QUEUE_CONCURRENT);
    dispatch_sync(queue_02, ^{
        [self test_01];
    });
    dispatch_sync(queue_02, ^{
        [self test_02];
    });

運(yùn)行結(jié)果:

2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########

    //測(cè)試三:創(chuàng)建一個(gè)異步線程---串行隊(duì)列
    dispatch_queue_t queue_03 =dispatch_queue_create("queue03", NULL);
    dispatch_async(queue_03, ^{
        [self test_01];
    });
    dispatch_async(queue_03, ^{
        [self test_02];
    });

運(yùn)行結(jié)果:

2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.331 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.332 Thread_GCDDeom[2787:147269] **********
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.333 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########
2017-08-08 10:14:46.334 Thread_GCDDeom[2787:147269] ##########

    dispatch_queue_t queue_04 =dispatch_queue_create("queue04", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(queue_04, ^{
        [self test_01];
    });
    dispatch_async(queue_04, ^{
        [self test_02];
    });

運(yùn)行結(jié)果:

2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.687 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154508] **********
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154462] ##########
2017-08-08 10:23:18.688 Thread_GCDDeom[2911:154508] **********

教程到此結(jié)束感猛,如果您需要Demo請(qǐng)點(diǎn)擊此處

如有疑問(wèn)Email : grammermao@gmail.com

最后還是歡迎您的star(☆☆☆☆☆)七扰,您的支持是我繼續(xù)寫(xiě)demo的無(wú)線動(dòng)力

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市陪白,隨后出現(xiàn)的幾起案子颈走,更是在濱河造成了極大的恐慌,老刑警劉巖咱士,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件立由,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡序厉,警方通過(guò)查閱死者的電腦和手機(jī)锐膜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)弛房,“玉大人道盏,你說(shuō)我怎么就攤上這事∥拇罚” “怎么了荷逞?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)粹排。 經(jīng)常有香客問(wèn)我种远,道長(zhǎng),這世上最難降的妖魔是什么恨搓? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任院促,我火速辦了婚禮筏养,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘常拓。我一直安慰自己渐溶,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布弄抬。 她就那樣靜靜地躺著茎辐,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掂恕。 梳的紋絲不亂的頭發(fā)上拖陆,一...
    開(kāi)封第一講書(shū)人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音懊亡,去河邊找鬼依啰。 笑死,一個(gè)胖子當(dāng)著我的面吹牛店枣,可吹牛的內(nèi)容都是我干的速警。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼鸯两,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼闷旧!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起钧唐,我...
    開(kāi)封第一講書(shū)人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤忙灼,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后钝侠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體该园,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年机错,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了爬范。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片父腕。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡弱匪,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出璧亮,到底是詐尸還是另有隱情萧诫,我是刑警寧澤,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布枝嘶,位于F島的核電站帘饶,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏群扶。R本人自食惡果不足惜及刻,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一镀裤、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧缴饭,春花似錦暑劝、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至丢氢,卻和暖如春傅联,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背疚察。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工蒸走, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人貌嫡。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓载碌,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親衅枫。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嫁艇,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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