1. 程式人生 > >GCD之全域性、主執行緒

GCD之全域性、主執行緒

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -(NSString *)fetchData { [NSThread sleepForTimeInterval:1]; return @"Hello world"; } -(NSString *)firstCast:(NSString *)data { [NSThread sleepForTimeInterval:2]; return [data uppercaseString]; } -(NSString *)secondCast:(
NSString *)data { [NSThread sleepForTimeInterval:3]; return [data stringByReplacingOccurrencesOfString:@"0" withString:@"o"]; } -(NSInteger)thrid:(NSString *)data { [NSThread sleepForTimeInterval:4]; return [data length]; }

 1.在View中放置一個UIButton按鈕和一個UITextView,在按鈕點選事件中呼叫上面的方法

 2.按鈕執行方法順序如下:

1 2 3 4 5 6 7 8 - (IBAction)btnclick:(id)sender { //__block  宣告變數可在block中修改 否則只有只讀許可權 __block int a=10; NSDate *startTiem=[NSDate date]; //對於全域性佇列(並行佇列) 宣告時第一個引數有三種:四種對應的是不同的全域性佇列 第二個引數目前未使用 始終為0 //1.DISPATCH_QUEUE_PRIORITY_DEFAULT //2.DISPATCH_QUEUE_PRIORITY_HIGH //3.DISPATCH_QUEUE_PRIORITY_LOW    <br>    //4.DISPATCH_QUEUE_PRIORITY_BACKGROUND
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 dispatch_queue_t queue=dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0); //dispatch_async 開啟非同步執行緒 dispatch_async(queue, ^{ NSString *fetchstring= [self fetchData]; NSString *firststring=[self firstCast:fetchstring]; NSString *secondstring=[self secondCast:firststring]; NSInteger length =[self thrid:fetchstring]; NSDate *endtime=[NSDate date]; //對於UI的更新獲取值都在主執行緒中 此時要用主執行緒來更新 主 執行緒是序列佇列 dispatch_async(dispatch_get_main_queue(), ^{ self.textview.text=secondstring; }); a=9;//若未在宣告變數時使用__block 時將會報錯不能編譯 NSLog(@

相關推薦

GCD全域性執行

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 -(NSString *)fetchData { [NSThread sleepForTimeInter

Python Mysql執行

文章目錄1、增2、刪3、改4、查二、多執行緒 一、Mysql 通過python操作mysql 1、增 import MySQLdb # 開啟門 conn = MySQLdb.connect(host='127.0.0.1',user='root',passwd

2執行執行輪流執行執行管理實現

程式設計題目: 2.子執行緒迴圈10次,接著主執行緒迴圈5次,接著又回到子執行緒迴圈10次,接著再回到主執行緒又迴圈5次,如此迴圈50次,請寫出程式。 示例程式碼: package p

Android使用Handler實現子執行與子執行執行之間通訊

今天這篇文章只講一下怎麼使用Handler實現子執行緒與子執行緒之間、子執行緒與主執行緒之間如何進行通訊,關於具體的內部實現因為我也沒研究過,所以這篇文章講不了。 一、子執行緒向主執行緒傳值: 這個實現比較簡單,因為主執行緒自帶Looper機制,所有我們不用

Application 判斷 是否在程序執行

package com.moretv.android; import android.app.ActivityManager; import android.app.Application; import android.content.Context; import an

執行守護執行非守護執行

主執行緒 main,但不是守護執行緒。 守護執行緒 是指在程式執行的時候在後臺提供一種通用服務的執行緒。如gc。 非守護執行緒 也叫使用者執行緒,由使用者建立。 關係: 主執行緒和守護執行緒一起銷燬; 主執行緒和非守護執行緒互不影響。 例如: package

設計模式單例模式【內附物件例項化幾種方式實現執行安全幾種方式】

繼續來複習常用的設計模式-單例模式,順便回憶一下執行緒安全的幾種實現方式。 一、什麼是單例模式 單例模式,簡單常用的一種設計模式,也很好的體現了程式碼控制物件在記憶體數量的一種方式,主要分2種實現方式: ①餓漢式,執行緒安全 ②懶漢式,執行緒不安全(新增鎖機制,可以實現執行緒安全)

Java併發程式設計執行生命週期守護執行優先順序和joinsleepyield

Java併發程式設計中,其中一個難點是對執行緒生命週期的理解,和多種執行緒控制方法、執行緒溝通方法的靈活運用。這些方法和概念之間彼此聯絡緊密,共同構成了Java併發程式設計基石之一。 Java執行緒的生命週期 Java執行緒類定義了New、Runnable、Running Man、Blocked和Dead

toast彈框imageview進度條執行訪問執行執行中的通訊handler)

1、imageview ?xml version="1.0" encoding="utf-8"?> <ImageView android:layout_width=“200dp” android:layout_marginLeft=“100dp” an

在非執行非MainActivity中更新ToastImageView等UI控制元件方法

首先需要明確一點就是UI只能在主執行緒中更新,其他地方想更新UI,我目前學到的有兩種方法: 1.採用handler的方式 public class MainActivity extends Activity{ ...... ImageView image

【Android】一Progress進度條實現的三種方式:執行實現,Service載入,動態建立

前言 更新版本,上傳資料到服務端,都是需要進度顯示的,Android進度顯示兩種方式 ProgressDialog 和 ProgressBar 新版本中ProgressDialog不被推薦使用,所以專案採用ProgressBar 分為三種實現方式: 1、MainAct

50執行建立的三種方式實現Runnable介面

實現Runnable介面建立執行緒 使用Runnable建立執行緒步驟: package com.sutaoyu.Thread; //1.自定義一個類實現java.lang包下的Runnable介面 class MyRunnable implements Runnable{ /

11執行視窗銷售火車票初體驗

前面的博文中記錄了一些關於多執行緒比較基礎的一些API知識,本篇博文將在此基礎上,整一個簡單的模擬火車票銷售的場景。此文只是簡單的模擬,後續會對此進行改進! package com.demo10; public class Tickets extends Thread{ priva

執行Atomic包

一、簡介 1、原子操作 我們在使用變數的時候,經常會出現資源競爭的情況,為了保證變數安全,我們就會對對應的方法新增"synchronized"同步鎖來達到目的,以保證執行緒安全。 而原子操作時一種執行緒安全的操作,在操作執行期間不會穿插任何操作。這意味著,我們不需要使用synchronized等同步序列

Java執行和其餘執行的區別和實踐(MainRunnableThread)

在日常的開發中,很多一些開發中較常見的問題,還是需要去仔細研究一下,最重要的還是實踐。以小見大。 一、Java執行緒中。Main、Runnable和Thread。 相信在工作中,只要是有用到多執行緒非同步程式設計,最起碼都要和這三個打交道。 1、每個Java應用程式

原始碼分析: WebSocket 和 是如何將收發到的訊息投遞給cocos執行

-->websocket的3種使用場景: 1)h5瀏覽器中websocket由瀏覽器提供 2)node.js中,可以使用ws模組寫伺服器 3)native app中,可以使用c++版本的websocket匯出c++介面給cocos creator客戶端使用  

python併發程式設計多程序執行非同步和協程

一、多執行緒   多執行緒就是允許一個程序記憶體在多個控制權,以便讓多個函式同時處於啟用狀態,從而讓多個函式的操作同時執行。即使是單CPU的計算機,也可以通過不停地在不同執行緒的指令間切換,從而造成多執行緒同時執行的效果。   多執行緒相當於一個併發(concunrr

四十一Linux 執行——執行同步條件變數

41.1 概念 41.1.1 條件變數的介紹 互斥鎖的缺點是它只有兩種狀態:鎖定和非鎖定 條件變數通過允許執行緒阻塞和等待另一個執行緒傳送訊號的方法彌補了互斥鎖的不足 條件變數內部是一個等待佇列,放置等待的執行緒,執行緒在條件變數上等待和通知,互斥鎖用來保護等待佇列(對等待佇列上鎖),條件變

四十二Linux 執行——執行同步條件變數執行狀態轉換

42.1 執行緒狀態轉換 42.1.1 狀態轉換圖    42.1.2 一個執行緒計算,多個執行緒獲取的案例 1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <pthread.h> 4

Android用Handler實現執行和子執行互相通訊以及子執行和子執行之間的通訊

1、上程式碼 activity_main.xml檔案 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.