[Java] Non-blocking Algorithms 介绍

阅读时间: 5分钟

Non-blocking algorithms 是一种算法可以允许Threads存取并享状态的物件而且不会造成阻塞。在一般说法,Non-blocking algorithms中如果一个Thread被暂停时,不会导致其他Thread也暂停。

接下来会讲解一下Non-blocking algorithms和Blocking algorithms的分别。

Non-blocking algorithms的运作原理如下图所示:
http://img2.58codes.com/2024/20119569ZCzY5i0Vjv.jpg
Non-blocking algorithms运作一般包含两个步骤:
第一, 执行Thread的请求操作
第二, 通知请求操作不能被执行

例子:
AtomicBoolean, AtomicInteger, AtomicLong 和AtomicReference
(它们都是class)

Blocking algorithms的运作原理如下图所示:
http://img2.58codes.com/2024/20119569etZ53DHbii.jpg
Blocking algorithms运作一般包含两个步骤:
第一, 执行Thread的请求操作
第二, 会阻塞Thread直到被安全执行操作

例子:
java.util.concurrent.BlockingQueue 界面

总结,从以上例子可以留意到它们的分别在于第2个步骤的处理方式不同。Non-blocking algorithms在遇到有其他thread正在存取相同的物件时会即时通知请求操作不能被执行,而Blocking algorithms不会有通知反而是一直在等待被执行。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章