不管是自己排队的同步模式,还是等待通知的异步模式。它们终究都有一个等待的过程,在这个等待的过程中,等待者能否做别的事情,决定了它是阻塞还是非阻塞。
①同步的操作,如果在等待的过程不能做别的事情,它是同步+阻塞的。这个也是最常见的
②同步的操作,如果在等待的过程可以做别的事情,它是同步+非阻塞的。
③异步的操作,如果在等待的过程不能做别的事情,它是异步+阻塞的。
④异步的操作,如果在等待的过程可以做别的事情,它是异步+非阻塞的。这个也是最常见的
由于通常的同步操作中,等待是通过循环来完成的,在消息没有到来之前一直都是简单的循环,它就是同步+阻塞的模式。在异步操作中,等待通常由监听器,事件触发完成。在消息没有到来之前可以继续做别的事情,消息到来后再切换到处理逻辑。而且这个过程通常是由多线程实现的,所以它是异步+非阻塞的模式。
但如果主线程一直等待另外一个子线程接收到消息通知后才进行后续的操作,那么它实际上是异步+阻塞的模式。它的阻塞不是发生在子线程处理消息的过程,而是发生在等待子线程接收到通知消息的过程。
-------------------------------------------------------------
生活就像打牌,不是要抓一手好牌,而是要尽力打好一手烂牌。
posted on 2010-03-10 15:36
Paul Lin 阅读(2780)
评论(2) 编辑 收藏 所属分类:
J2SE