簡單理解什麼是同步阻塞/同步非阻塞,非同步阻塞/非同步非阻塞
簡單理解什麼是同步阻塞/同步非阻塞,非同步阻塞/非同步非阻塞
舉個栗子
1、你在家做飯,用普通的湯鍋,米放進去,就站在鍋邊,傻等飯熟。——這叫同步阻塞
是不是覺得浪費了大量的時間,於是你想提高時間的利用效率。
2、還是用普通的湯鍋,米放進去,然後繼續回去打遊戲,過一會就來看一次。——這叫同步非阻塞
時間的利用率稍微提升了一點點,還有沒有辦法再提升一點呢?
3、你去某寶淘了個電飯鍋,飯熟了會自動跳閘的那種。米放進去,然後傻傻的看它怎麼做飯的。——這叫非同步阻塞
這有什麼意義呢?完全沒利用好電飯鍋的優勢啊
4、這回學聰明瞭,米放進去,按下按鈕,然後就去打遊戲了,等到跳閘的時候就去吃飯 。——這叫非同步非阻塞
這樣是不是聰明瞭很多,時間的利用率大大提升。
相對於程式而言的 ,非同步可以給你節省出更多的時間,讓你去幹別的事,同步只能由你自己主動去檢視。
孰優孰劣不言而喻 。
阻塞和非阻塞,也很好理解。
同步阻塞,順序執行,只能傻等,效率低下 。
同步非阻塞,稍微高明點,但是麻煩了很多,多做很多無用功。
非同步阻塞,這個等於自斷一臂,沒啥大意義。
非同步非阻塞,這才是非同步的最佳用法。
相關推薦
簡單理解什麼是同步阻塞/同步非阻塞,非同步阻塞/非同步非阻塞
簡單理解什麼是同步阻塞/同步非阻塞,非同步阻塞/非同步非阻塞 舉個栗子 1、你在家做飯,用普通的湯鍋,米放進去,就站在鍋邊,傻等飯熟。——這叫同步阻塞 是不是覺得浪費了大量的時間,於是你想提高時間的利用效率。 2、還是用普通的湯鍋,米放進去,然後繼續回去打遊戲,過一會就來看一次。——
深入理解非阻塞同步IO和非阻塞異步IO
sam log while循環 不清楚 重要 http 文章 最終 簡單 這兩篇文章分析了Linux下的5種IO模型 http://blog.csdn.net/historyasamirror/article/details/5778378 http://blog.csd
簡單測試Java線程安全中阻塞同步與非阻塞同步性能
訪問 完成 老師 system 測試 int oid 1.2 run 摘抄自周誌明老師的《深入理解Java虛擬機:JVM高級特性與最佳實踐》13.2.2 線程安全的實現方法 1.名詞解釋 同步是指鎖哥線程並發訪問共享數據時,保證共享數據同一時刻只被一個線程訪問 互斥同步(阻
簡單測試Java執行緒安全中阻塞同步與非阻塞同步效能
摘抄自周志明老師的《深入理解Java虛擬機器:JVM高階特性與最佳實踐》13.2.2 執行緒安全的實現方法 1.名詞解釋 同步是指鎖哥執行緒併發訪問共享資料時,保證共享資料同一時刻只被一個執行緒訪問 互斥同步(阻塞同步)是一種悲觀的併發策略,總是認為只要不去做正確的同步措施(加鎖),那就肯定會出現問題。 阻塞
同步與阻塞,異步與非阻塞的區別(轉)
http 理解 art 處理 www 影響 cnblogs 數據拷貝 用戶態 https://www.cnblogs.com/-900401/p/4015048.html 很受益的一篇文章,特別是後面對四種模型的解析。 理解阻塞和非阻塞,同步異步,有一個核心點要搞
同步阻塞同步非阻塞異步阻塞異步非阻塞--簡明介紹
同步異步阻塞非阻塞同步、異步:針對發送方阻塞、非阻塞:針對接收方發送方接收方發送方處理接收方處理同步阻塞等待接收方返回等待處理結果返回發送方同步非阻塞等待接收方返回不等待處理結果,去做其他事情異步阻塞不等待接受方返回等待處理結果返回發送方異步非阻塞不等待接受方返回不等待處理結果,去做其他事情本文出自 “Lin
簡單理解線程--阻塞,interrupt
log println 使用 pub 同時 static 數據 之前 必須 什麽是線程 線程是進程的一個實體,是CPU調度和分派的基本單位,它是比進程更小的能獨立運行的基本單位。線程自己基本不擁有資源,只擁有一點在運行中必不可少的資源(如程序計數器,一組寄存器和棧),但
java多執行緒11.非阻塞同步機制
關於非阻塞演算法CAS。 比較並交換CAS:CAS包含了3個運算元---需要讀寫的記憶體位置V,進行比較的值A和擬寫入的新值B。當且僅當V的值等於A時,CAS才會通過原子的方式用新值B來更新V的值,否則不會執行任何操作。無論位置V的值是否等於A,都將返回V原有的值。然後執行緒可以基於新返回的V值來做對應的操作
java多線程11.非阻塞同步機制
!= cte ret 包含 策略 返回 編譯 -- current 關於非阻塞算法CAS。 比較並交換CAS:CAS包含了3個操作數---需要讀寫的內存位置V,進行比較的值A和擬寫入的新值B。當且僅當V的值等於A時,CAS才會通過原子的方式用新值B來更新V的值,否則不會執行
socket阻塞與非阻塞 同步與非同步 I/O模型
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
併發程式設計學習筆記之原子變數與非阻塞同步機制(十二)
概述 java.util.concurrent包中的許多類,比如Semaphore和ConcurrentLinkedQueue,都提供了比使用Synchronized更好的效能和可伸縮性.這是因為它們的內部實現使用了原子變數和非阻塞的同步機制. 近年來很多關於併發演算法的研究都聚焦在非阻塞演算法(nonb
第 15 章 原子變數與非阻塞同步機制
@@@ 在 java.util.concurrent 包的許多類中,例如 Semaphore 和 ConcurrentLinkedQueue ,都提供 了比 synchronized 機制更高的效能和可伸縮性。這種效能
《JAVA併發程式設計實戰》原子變數和非阻塞同步機制
引言 即使原子變數沒有用於非阻塞演算法的開發,他們也可以用作一種“更好的”volatile型別變數。原子變數提供了與volatile型別變數相同的記憶體語義,此外還支援原子的更新操作,從而使他們更加適用於實現計數器、序列發生器和統計資料收集等,同時還能比基於鎖
非阻塞同步演算法實戰(二)-BoundlessCyclicBarrier
感謝網友trytocatch的投稿 前言 相比上一 篇而言,本文不需要太多的準備知識,但技巧性更強一些。因為分析、設計的過程比較複雜繁瑣,也限於篇幅,所以,主要展示如何解決這些需求,和講解程式碼。另外,所講的內容也是後一篇實戰中需要用到的一個工具類。 需求介紹 我需要編寫一個同步工具,它需要提
非阻塞同步演算法實戰(一)
前言 本文寫給對ConcurrentLinkedQueue的實現和非阻塞同步演算法的實現原理有一定了解,但缺少實踐經驗的朋友,文中包括了實戰中的嘗試、所走的彎路,經驗和教訓。 背景介紹 上個月,我被安排獨自負責一個聊天系統的服務端,因為一些原因,我沒使用現成的開源框架,網路那塊直接使用AIO
非阻塞同步演算法實戰(三)-LatestResultsProvider
感謝trytocatch投遞本文。 前言 閱讀本文前,需要讀者對happens-before比較熟悉,瞭解非阻塞同步的一些基本概念。本文主要為happens-before法則的靈活運用,和一些解決問題的小技巧,分析問題的方式。 背景介紹 原始需求為:本人當時在編寫一個正則替換工具,裡面會動態地
Netty之BIO(同步阻塞IO)、PIO(偽非同步阻塞IO)、NIO(非同步非阻塞IO)、AIO(非同步非阻塞IO)
學習書籍:Netty權威指南 多種IO方式的比較: 1、BIO(同步阻塞IO) 使用ServerSocket繫結IP地址和監聽埠,客戶端發起連線,通過三次握手建立連線,用socket來進行通訊,通過輸入輸出流的方式來進行同步阻塞的通訊 每次客戶端發起連線請求,都會
非阻塞同步演算法與CAS(Compare and Swap)無鎖演算法
鎖(lock)的代價 鎖是用來做併發最簡單的方式,當然其代價也是最高的。核心態的鎖的時候需要作業系統進行一次上下文切換,加鎖、釋放鎖會導致比較多的上下文切換和排程延時,等待鎖的執行緒會被掛起直至鎖釋放。在上下文切換的時候,cpu之前快取的指令和資料都將失效,對效能有很大的損失。作業系統對多執行緒的鎖進行判斷
Netty之BIO(同步阻塞IO)、PIO(偽非同步阻塞IO)、NIO(非同步非阻塞IO)、AIO(非同步非阻塞IO)、Netty
學習書籍:Netty權威指南 多種IO方式的比較: 1、BIO(同步阻塞IO) 使用ServerSocket繫結IP地址和監聽埠,客戶端發起連線,通過三次握手建立連線,用socket來進行通訊,通過輸入輸出流的方式來進行同步阻塞的通訊 每次客戶端發起連線請求,都會啟動一個執
thrift java多執行緒非阻塞同步/非同步呼叫例項
作者:呂桂強 郵箱:[email protected] 首先建立thrift檔案 namespace java thriftservice Hello{ string helloString(1:string para)} 執行thrift -ge