不管是自己排隊的同步模式,還是等待通知的異步模式。它們終究都有一個等待的過程,在這個等待的過程中,等待者能否做別的事情,決定了它是阻塞還是非阻塞。
①同步的操作,如果在等待的過程不能做別的事情,它是同步+阻塞的。這個也是最常見的
②同步的操作,如果在等待的過程可以做別的事情,它是同步+非阻塞的。
③異步的操作,如果在等待的過程不能做別的事情,它是異步+阻塞的。
④異步的操作,如果在等待的過程可以做別的事情,它是異步+非阻塞的。這個也是最常見的
由于通常的同步操作中,等待是通過循環來完成的,在消息沒有到來之前一直都是簡單的循環,它就是同步+阻塞的模式。在異步操作中,等待通常由監聽器,事件觸發完成。在消息沒有到來之前可以繼續做別的事情,消息到來后再切換到處理邏輯。而且這個過程通常是由多線程實現的,所以它是異步+非阻塞的模式。
但如果主線程一直等待另外一個子線程接收到消息通知后才進行后續的操作,那么它實際上是異步+阻塞的模式。它的阻塞不是發生在子線程處理消息的過程,而是發生在等待子線程接收到通知消息的過程。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
posted on 2010-03-10 15:36
Paul Lin 閱讀(2792)
評論(2) 編輯 收藏 所屬分類:
J2SE