当前位置: 首页 > news >正文

论文 网站建设重庆市建设施工安全管理网官网

论文 网站建设,重庆市建设施工安全管理网官网,黑龙江省建设协会网站首页,wordpress小工具没有系列文章目录 设计模式之避免共享的设计模式Immutability(不变性)模式 设计模式之并发特定场景下的设计模式 Two-phase Termination(两阶段终止)模式 设计模式之避免共享的设计模式Copy-on-Write模式 设计模式之避免共享的设计模…

系列文章目录

设计模式之避免共享的设计模式Immutability(不变性)模式
设计模式之并发特定场景下的设计模式 Two-phase Termination(两阶段终止)模式
设计模式之避免共享的设计模式Copy-on-Write模式
设计模式之避免共享的设计模式 Thread-Specific Storage 模式
设计模式之多线程版本的if------Guarded Suspension模式


提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 系列文章目录
  • 简介
  • 与Guarded Suspension对比
  • 应用场景
  • 如何实现Balking模式
  • 样例


简介

  • Balking是“退缩不前”的意思。
  • 如果现在不适合执行这个操作,或者没必要执行这个操作,就停止处理,直接返回。当流程的执行顺序依赖于某个共享变量的场景,可以归纳为多线程if模式。Balking模式常用于一个线程发现另一个线程已经做了某一件相同的事,那么本线程就无需再做了,直接结束返回。
  • Balking模式是一种多个线程执行同一操作时可以考虑的模式;在线程2阻塞或者执行其他操作时,线程1同样可以完成操作,而当线程2执行或者继续执行操作时,因为操作已被执行过了,而无需线程2再执行,从而提升线程2的执行效率。

与Guarded Suspension对比

Balking模式和Guarded Suspension模式一样,存在守护条件,如果守护条件不满足,则中断处理;这与Guarded Suspension模式不同,Guarded Suspension模式在守护条件不满足的时候会一直等待至可以运行。

应用场景

  • sychronized轻量级锁膨胀逻辑
  1. 初始状态:某个线程尝试进入同步块时,如果该同步块没有被其他线程占用,并且此时不存在竞争,Java 虚拟机会将该同步块的对象头 Mark Word 的部分记录下来作为该线程的锁记录(Lock Record)。
  2. 竞争状态:当其他线程也尝试进入同步块,而此时存在竞争时,轻量级锁会膨胀为重量级锁。重量级锁的实现通常会涉及到操作系统底层的线程阻塞和唤醒机制,它会使得持有该锁的线程阻塞而不是自旋等待。
  3. 膨胀过程:膨胀的过程中,Java 虚拟机会将原来记录在对象头的锁记录替换为指向重量级锁的指针,这样当其他线程尝试获取该锁时就会转变为重量级锁的获取和释放逻辑。
  • DCL单例实现

DCL(Double-Checked Locking)是一种单例模式的实现方式,它通过双重检查(即在加锁前后都检查是否已经创建实例)来提高单例模式的性能。

  • 服务组件的初始化
  1. 配置加载:加载服务组件所需的配置信息,例如数据库连接信息、缓存配置、日志配置等。这可以通过读取配置文件、从外部服务获取配置等方式来实现。
  2. 资源分配和初始化:根据配置信息,初始化服务组件所需的资源,例如数据库连接池、线程池、缓存对象等。确保资源能够正确分配和初始化,并达到可用状态。
  3. 依赖注入:如果服务组件依赖于其他组件或对象,需要进行依赖注入,即将依赖的对象注入到服务组件中,以便服务组件能够正常运行。
  4. 启动服务:启动服务组件,使其处于可用状态,可以接受外部请求并提供相应的功能。
  5. 执行其他初始化逻辑:根据具体需求,执行其他必要的初始化逻辑,例如预加载数据、初始化定时任务等。

如何实现Balking模式

  • 锁机制 (synchronized reentrantLock)
  • cas
  • 对于共享变量不要求原子性的场景,可以使用volatile

样例

import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;/*** @author yang* @version 1.0.0*/
public class BalkingExample {private boolean jobInProgress = false;private final Lock lock = new ReentrantLock();public void doJob() {if (lock.tryLock()) {try {if (jobInProgress) {System.out.println("工作已经在进行中,返回...");return; // 另一个线程已经在执行该操作,无需再执行}jobInProgress = true;System.out.println("执行...");// 执行需要做的工作} finally {jobInProgress = false; // 完成工作后将jobInProgress设置为falselock.unlock();}} else {System.out.println("另一个线程当前正在执行该作业, 返回...");}}public static void main(String[] args) {BalkingExample balkingExample = new BalkingExample();// 创建多个线程调用doJob方法for (int i = 0; i < 5; i++) {Thread thread = new Thread(() -> {balkingExample.doJob();});thread.start();}}
}
http://www.yayakq.cn/news/690376/

相关文章:

  • 网站建设推广文案如何做手机app软件
  • 做pc端网站必知网站理念
  • 网站开发验收规范在网站上部署淘宝联盟推广代码的推广模式.
  • 安徽中兴建设工程有限公司网站asp.net wordpress
  • 广汉市 建设局网站程序员给女盆友做的网站
  • ie 常用网站如何自己做外贸网站
  • 国内网站要备案seo教学视频教程
  • 免费cad图纸下载网站php5mysql网站开发实例精讲
  • 网站前台乱码福州网络营销
  • 关于美食网站的问卷调查怎么做2020 惠州seo服务
  • 广西南宁市网站建设服务中心WordPress任务悬赏 插件
  • 森动网网站建设好吗公司的网站建设规划书
  • 企业网站制作公司电话微信开发者模式
  • 创意网站建设设计公司可做设计任务的网站
  • 网站中的滑动栏怎么做网站大图怎么做更吸引客户
  • 江门网站推广技巧wordpress+刷新
  • 个人购物网站 怎么建wordpress控制字数
  • 提高网站公信力 单仁室内设计公司和装修公司的区别
  • 网站换一家做还用备案么一个网站需要多大的空间
  • 机关单位网站建设管理制度群晖wordpress端口无法登陆
  • 静态购物网站模板免费网站站长
  • 网站运营名词解释公司的网站建设费应该怎么入账
  • 临沂的网站建设怎么做类似豆瓣的网站
  • 海珠区建设和水务局网站php 手机网站
  • 网站建设与运营在线考试创新驱动发展战略内容
  • 兰州做网站咨询兰州做网站公司短网址还原工具
  • 网站开发加设计要多少钱做网站 什么语言好
  • 河南郑州网站建设哪家公司好甘肃省建设工程网上投标网站
  • 大连市城市建设档案馆网站天猫网站的建设
  • 网站上传用什么软件做视频教程重庆网站建设大概需要多少钱