1. 程式人生 > >程序的同步和非同步

程序的同步和非同步

Java中互動方式分為同步和非同步兩種:

  1. 同步互動:指傳送一個請求,需要等待返回,然後才能夠傳送下一個請求,有個等待過程;

  2. 非同步互動:指傳送一個請求,不需要等待返回,隨時可以再發送下一個請求,即不需要等待。
    區別:一個需要等待,一個不需要等待,在部分情況下,我們的專案開發中都會優先選擇不需要等待的非同步互動方式。

  3. 同步可以避免程序之間的死鎖 ,讀髒資料的可能性發生,一般在專案中如果存在多人或者多程序擁有許可權操作同一資料時,要使用同步互動。
  4. 非同步互動可以提高計算機執行的效率。
  5. 併發和並行是不同的,併發是指巨集觀上並行,其實不是並行,例如,多程序其實是將所有程序按時間分為一個一個的時間片,每一個時刻只執行該執行的片,時間片過期後轉而執行下一個程序的時間片。
  6. 如下圖:

    |
    |~~~__~~~~~__~~~~~~~~~~~~~~~~ 程序A
    |
    |__~~~~~~__~~~~~~~~~~~~~~~~~~ 程序B
    |
    |~~~~~__~~~~~~~__~~~~~~~~~~~~ 程序C
    |
    |______________________________時間軸
  7. ~~~~~部分是指此時沒有在執行的程序
    __部分是指佔用CPU執行的程序時間片

    從上圖可以看出,程序B首先執行,然後當B執行結束後(時間片到)轉到A,然後轉到C
    不過由於時間片很短,所以看起來是並行處理的,其實不是,所以叫併發,而不是並行。

    其實每一個時間只執行一個程序的一片而已。
    並行是如你所說的,多個程式同時執行(不過一個處理機不知道能不能支援多個程序,一般伺服器採用多個處理機處理多個程序)

相關推薦

程序同步非同步--詳解

程序同步用來實現程式併發執行時候的可再現性。 一.程序同步及非同步的概念 1.程序同步:就是在發出一個功能呼叫時,在沒有得到結果之前,該呼叫就不返回。也就是必須一件一件事做,等前一件做完了才能做下一件事.就像早上起床後,先洗涮,然後才能吃飯,不能在洗涮沒有完成時,就開始吃飯

python-同步非同步、阻塞非阻塞、序列並行、並行併發、密集型、執行緒程序的相關概念

1. 同步和非同步   關注的是訊息的通訊機制,描述的是一種行為方式,是多個任務之間的關係。 ① 同步: 呼叫者主動等待被呼叫方返回結果,在沒有返回結果之前,就一直專職等待。 千萬不要把計算機中“同步”理解成“同時執行”。 ② 非同步:呼叫者傳送請求請求,不會專職等待

程序同步非同步

Java中互動方式分為同步和非同步兩種: 同步互動:指傳送一個請求,需要等待返回,然後才能夠傳送下一個請求,有個等待過程; 非同步互動:指傳送一個請求,不需要等待返回,隨時可以再發送下一個請求,即不需要等待。 區別:一個需要等待,一個不需要等待,在部分情況下,我們的專案開發中都會優先選擇不需要等待的非

程序執行緒的區別?同步非同步的區別?並行併發的區別?

程序是資源的分配和排程的一個獨立單元,而執行緒是CPU排程的基本單元 同一個程序中可以包括多個執行緒,並且執行緒共享整個程序的資源(暫存器、堆疊、上下文),一個進行至少包括一個執行緒。 程序的建立呼叫fork或者vfork,而執行緒的建立呼叫pthread_create,程序結束後它擁有的所有執行緒都將銷燬

程序執行緒、併發並行、同步非同步

作業系統有三大特性:1.併發  2.共享  3.非同步1.談到併發,就不得不提序列和並行了。這三點容易混淆。如下圖所示,序列:一個時間段內,執行一個任務的同時不能執行其他任務,只能等到第一個任務完成後才能進行第二個。並行:一個時間段內有多個任務,可以同時執行兩個或多個任務。併

Java執行緒-同步非同步的區別

1.                                         &nb

執行緒的同步非同步理解

//當個執行緒訪問同一個資源的時候,要注意執行緒同步的問題,如果不同步容易造成資料沒及時修改,然後就被另一個執行緒訪問,得到的資料還是上一次的資料,造成資料錯誤的情況,以下demo可以很容易發現,為了便於發現我在上面休眠100毫秒,如果將ticket設為方法內的區域性變數則就不會共享了。 pa

IOS 呼叫WebService 同步非同步

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

ajax 的 async 的同步 非同步

async 英語釋義為 “非同步,非同步”。在專案中使用時總是忽略了它的存在。 當 async 是設定為 “true(預設狀態)”,即表示非同步進行,在 $.ajax執行時,也會同時執行$.ajax ->url 中的東西(想當於有兩個執行緒同時進行)。 當 async 是設定

關於js的同步非同步,個人理解

之前對JS的同步和非同步一直搞不清楚,今天看了些文章,談談自己的理解。 非同步函式往往是有等待性質的函式,主流程在執行到等待的時候,為了提高效率,就把這個函式掛起了,放進一個等待的佇列。接著主程式繼續執行後面的函式。 一直執行到主程式佇列裡的函式執行完畢,這時主程式再去查詢等待佇列裡哪個程式等待

什麼是同步非同步,什麼是阻塞非阻塞

同步和非同步是針對應用程式和核心的互動而言的,同步指的是使用者程序觸發IO操作並等待或者輪詢的去檢視IO操作是否就緒,而非同步是指使用者程序觸發IO操作以後便開始做自己的事情,而當IO操作已經完成的時候會得到IO完成的通知。 以銀行取款為例: 同步:自己親自出馬持銀行卡到銀行取錢(使用同

Node學習基礎(三) 之檔案的同步非同步寫入操作(fs_檔案系統)

下面遇到看不懂的可以去看官方文件。 首先引入fs模組 第二步開啟檔案  官方文件格式是這樣  path 檔案路徑  這裡例子裡是FileHello.txt  如果沒有這個檔案 所以他會自動建立 FileHello.txt

Ajax同步非同步的區別,如何解決跨域問題

同步的概念應該是來自於OS中關於同步的概念:不同程序為協同完成某項工作而在先後次序上調整(通過阻塞,喚醒等方式).同步強調的是順序性.誰先誰後.非同步則不存在這種順序性. 同步:瀏覽器訪問伺服器請求,使用者看得到頁面重新整理,重新發請求,等請求完,頁面重新整理,新內容出現,使用者看到新內容,進行下一步操作。

程序同步執行緒同步

怎樣同步多個執行緒或多個程序的活動。為允許線上程或程序間共享資料,同步是必需的。 互斥鎖和條件變數是同步的基本組成部分。互斥鎖和條件變量出自POSIX.1執行緒標準,它們總是可用來同步一個程序內的各個執行緒的。如果一個互斥鎖或條件變數存放在多個程序間共享的某個記憶體中,那麼POSIX

阻塞非阻塞、同步非同步

阻塞和非阻塞 阻塞呼叫是指呼叫結果返回之前,呼叫者會進入阻塞狀態等待。只有在得到結果之後才會返回。 非阻塞呼叫是指在不能立刻得到結果之前,該函式不會阻塞當前執行緒,而會立刻返回。   2.同步與非同步 同步和非同步關注的是訊息通訊機制 (synchronous c

同步非同步_阻塞非阻塞

阻塞和非阻塞 執行緒去請求資源時,遇到資源正在處理還未準備就緒的情況的兩種處理方式: 阻塞:執行緒等待該資源準備就緒。呼叫結果返回之前,當前執行緒會被掛起。 非阻塞:執行緒發現該資源正在處理,會去請求別的資源 同步和非同步 訪問資料的兩種機制: 同步:請求資料時,等

談IO中的阻塞非阻塞,同步非同步及三種IO模型

什麼是同步和非同步?        燒水,我們都是通過熱水壺來燒水的。在很久之前,科技還沒有這麼發達的時候,如果我們要燒水,需要把水壺放到火爐上,我們通過觀察水壺內的水的沸騰程度來判斷水有沒有燒開。隨著科技的發展,現在市面上的水壺都有了提醒功能,當我們把水壺插電

Ajax 的同步非同步,下拉框 聯動 回顯第二個不能回顯成功

Ajax 的同步和非同步,下拉框 聯動 回顯第二個不能回顯成功 示例: 使用Ajax 實現下拉框聯動 回顯 出現呢只有第一個能夠回顯成功 其餘的都不能正常回顯。 原因 :使用了Ajax的非同步 select的賦值再 非同步之前導致的 ( 賦值前個彈出 可以暫停賦值的執行順序 先載入後賦值 )

elasticsearch(三)java 分別使用同步非同步方法進行刪除操作

一、 基本步驟: 1)建立連線物件: RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(

elasticsearch(一)java 分別使用同步非同步方法進行索引、更新操作

一、索引或更新基本步驟 1) 建立與elasticsearch服務進行連線的RestHighLevelClient物件 RestHighLevelClient client = new RestHighLevelClient( Res