以下是学习了《图解Java多线程设计模式》一书中记录的内容

Single Threaded Execution模式——能通过这座桥的只有一个人

Single Threaded Execution模式是多线程设计的基础。

Single Threaded Execution即“以一个线程执行”。就像独木桥同一时间只允许一个人通行一样。

Single Threaded Execution有时候也称为临界区(critical section)或临界域(critical region)。Single Threaded Execution这个名称侧重于执行处理的线程(过桥的人),而临界区或临界域的名称侧重于执行范围(人过的桥)。

该模式操作的角色就是SharedResource(共享资源),该类具有两种类型的方法:

  1. safeMethod:多个线程同时调用也不会发生问题的方法。
  2. unsafeMethod:多个线程同时调用会发生问题,因此必须加以保护的方法。

要点

何时使用

1、多线程时:但线程程序不需要使用该模式,即无需使用synchronized,当然单线程使用synchronized也不会破坏安全性,但是性能会有所下降;

2、多个线程访问时:Share Resource角色的实例有可能被多个线程同时访问时;

3、状态有可能发生变化时:Share Resource角色的状态会发生变化,当然,如果实例创建后,实例的状态不会发生改变,例如Immutable模式中,则无需使用Single Threa

Single Threaded Execution模式相关推荐

  1. 多线程编程模式之Single Threaded Execution 模式

    一.Single Threaded Execution 模式介绍 简单的来说,Single threaded execution 模式描述了在一种多线程环境下各个线程对于公用资源的使用方式--任一时刻 ...

  2. java多线程之Single Threaded Execution模式

    一.简介 所谓Single Threaded Execution模式,就是指"以一个线程执行",就像一座独木桥同一时间内只允许一个人通过一样,该模式用于设置限制,以确保同一时间内只 ...

  3. 一 、Single Threaded Execution 模式

    当我们修改多个线程共享的实例时,实例就会失去安全性.所以,我们应该仔细找出实例状态不稳定的范围,将这个范围设为临界区,并对临界区进行保护,使其只允许一个线程同时执行. JAVA使用synchroniz ...

  4. 第一章Single Threaded Execution模式 能通过这座桥的只有一个人

    [Single Threaded Execution模式] 以一个线程执行,就像独木桥同一时间内只允许一个人通行一样,该模式用于设置限制.以确保同一时间内只能让一个线程执行处理. Single Thr ...

  5. java single threaded_[Java多线程设计模式]读书笔记 - 第一章 Single Threaded Execution

    Single Threaded Execution是指"以1个线程执行"的意思.就像细独木桥只允许一个人通行一样,这个Pattern用来限制同时只让一个线程运行. Single T ...

  6. Single Threaded Execution Pattern

    如果不使用Single Threaded Exception Pattern: 门类: 人类: main: 执行结果: 为什么会有broken(损坏): Gate是非线程安全的类. 测试并无法证明安全 ...

  7. How is javascript asynchronous AND single threaded?

    原文: https://www.sohamkamani.com/blog/2016/03/14/wrapping-your-head-around-async-programming/ ------- ...

  8. 【解决没有该选项问题】使Clion运行编译运行单个C/C++文件(Single File Execution插件)

    由于Clion只能运行C++工程,因此在写算法的时候无法运行多个C++文件, 我们需要借助Single File Execution插件实现 1.下载插件 2.添加文件 3.刷新项目 4.运行即可 可 ...

  9. 【CLion】如何编译运行单个文件 (C/C++ Single File Execution插件的使用)

    如果你知道如何使用 C/C++ Single File Execution 插件但仍然无法找到运行按钮 请直接看第五张图片 一. 这里我首先新建了一个项目,名为Demo 又在项目文件夹内新建了一个代码 ...

最新文章

  1. 释疑の删除多余的ALV布局以及选择条件变式
  2. ITK:重采样DICOM系列
  3. 苹果公布WWDC20大会安排、Snapchat上线小程序功能、QUIC和HTTP/3 将定稿|Decode the Week...
  4. 关于mysql的几个问题
  5. Git flow(使用工具自动git flow+解决合并冲突)
  6. Prototype的JSON支持
  7. 关于SQL模糊查询日期时间的方法,格式化日期时间年月日时分秒,去掉毫秒
  8. python生成动态链接二维码
  9. 数据结构——课程设计
  10. windows虚拟显示器开发(二)WDDM hook(USB转HDMI驱动、USB手写屏开发)
  11. pageoffice 选中部分文字 添加书签和空白处添加书签 删除空白以及内容书签
  12. 用什么软件测试路由器,软件测试路由器系统的方法及其运用
  13. DELPHI 字符转16进制、16进制转字符
  14. 微信小程序游戏开发│石头剪刀布游戏(附源码)
  15. oracle drop怎么用,Oracle Drop Table
  16. mathematica中同时判断多个函数——可变动参数的情况
  17. 阿里物联网平台的使用
  18. 【台大郭彦甫】Matlab入门教程超详细学习笔记六:高阶绘图(附PPT链接)
  19. noip2014飞扬的小鸟
  20. HTTP协议和资源下载

热门文章

  1. 老熊一亩三分地里的Oracle工具
  2. c++语言解一元二次方程,C++ 求解一元二次方程
  3. CF11A Increasing Sequence(C++)
  4. @Embedded 和 @Embeddable
  5. gsva gsea ssgsea gaochao 使用GSVA方法计算某基因集在各个样本的表现
  6. h5开发安卓机型点击输入框调起输入法,输入框被键盘遮挡的解决方法
  7. Android 将PDF文件转Bitmap,并将Bitmap以图片的方式保存到相册
  8. 用Python去除图像的黑色或白色背景
  9. mysql五日均线_5日均线战法(建议收藏)
  10. C#使用正则表达式校验邮箱