Java多线程模式之Single Threaded Execution

 Single Threaded Execution:  该模式能保证最多有一个线程执行指定的方法

 何时使用: 1. 多线程环境

                  2. 多线程存在共享的资源

                  3. 共享的资源是可变的

  以上3个条件缺一不可

 

 

 

 Single Threaded Execution模式如果同时满足下列几个条件时,就会产生死锁:

  1. 每个线程 同时需要1个以上共享资源

  2. 每个线程的一个操作在锁定一个资源的时候,还没解除前就去锁定另一个资源

  3。每个线程对操作对资源需要的顺序不一样

 

Main:

public class Main {
    public static void main(String[] args) {
        System.out.println("Testing EaterThread, hit CTRL+C to exit.");
        Tool spoon = new Tool("Spoon");
        Tool fork = new Tool("Fork");
        new EaterThread("Alice", fork, spoon ).start();
        new EaterThread("Bobby", spoon, fork).start();
    }
}

 

Tool:

public class Tool {
    private final String name;
    public Tool(String name) {
        this.name = name;
    }
    public String toString() {
        return "[ " + name + " ]";
    }
}

 

EaterThread:

 

public class EaterThread extends Thread {
    private String name;
    private final Tool lefthand;
    private final Tool righthand;
    public EaterThread(String name, Tool lefthand, Tool righthand) {
        this.name = name;
        this.lefthand = lefthand;
        this.righthand = righthand;
    }
    public void run() {
        while (true) {
            eat();
        }
    }
    public void eat() {
        synchronized (lefthand) {
            System.out.println(name + " takes up " + lefthand + " (left).");
            synchronized (righthand) {
                System.out.println(name + " takes up " + righthand + " (right).");
                System.out.println(name + " is eating now, yam yam!");
                System.out.println(name + " puts down " + righthand + " (right).");
            }
            System.out.println(name + " puts down " + lefthand + " (left).");
        }
    }
}

 

 

 

 

 

 

 

 

【ARM Trace32(劳特巴赫) 使用介绍 13 -- Trace32 Var 变量篇】 例如我们已经知道一个符号(可能是变量或者函数)的地址,怎么确定这个地址是一个变量还是一个函数呢?如果是变量的话,变量名是啥?变量定义的位置在哪?如果是函数,函数名是啥?函数定义的位置又在哪呢?查看结构体变量 str_t32 的值。例如我们已经知道了一个符号的地址为。在map文件中的地址为。 阅读详情

相关推荐

高速设计注意事项总结——MDI篇

在以太网高速通信系统中,MDI(Medium Dependent Interface,介质相关接口)是连接物理层芯片(PHY)与传输介质(如网线)的关键接口,其设计直接影响信号完整性、传输速率和抗干扰能力。本文围绕 MDI 及 RJ45 接口电路、关键参数、设计与布线要点展开,为高速以太网设计提供参考。本文包含MDI 及 RJ45 接口电路组成、电路设计注意事项、布局布线要求等内容

qq_16237389的博客 1445

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

Single Threaded Execution是指“以1个线程执行”的意思。就像细独木桥只允许一个人通行一样,这个Pattern用来限制同时只让一个线程运行。Single Threaded Execution将会是多线程程序设计的基础。务必要学好。Single Threaded Execution有时候也被称为Critical Section(临界区)。Single Threaded Exec...

weixin_35749796的博客 221

差分信号_差分信号的原理及其在PCB的设计

差分线是 PCB 设计中非常重要的一部分信号线,信号处理要求也是相当严谨,今天为大家介绍下差分信号的原理以及其在 PCB 设计中的处理方法。 什么是差分信号 差分传输是一种信号传输的技术,区别于传统的一根信号线一根地线的做法,差分传输在这两根线上都传输信号,这两个信号的振幅相等,相位相差 180 度,极性相反。在这两根线上传输的信号就是差分...

weixin_31849185的博客 1809

一、Java多线程设计模式-SingleThreaded Execution

SingleThreaded Execution 一次只允许一个线程执行 扩展 2.1 原子操作 基本类型、引用类型的赋值和引用是原子操作 long和double的赋值和引用是非原子操作 long或double在线程间共享时,需要将其放入synchronized中操作,或者声明为volatile ...

菜鸟的专栏 277

【医学影像】超声(UltraSound)影像的增强与目标检测

文章目录1 综述1.1 超声发展简史1.2 超声类型2 超声影像的去噪与增强2.1 各向异性扩散去噪模型2.2 色彩恢复的视网膜增强算法SSR和MSR2.3 MSRCR增强算法(基于MSR算法改进版)2.4 参考文献3 超声影像的目标识别3.1 基于跨模态数据迁移进行DL训练3.2 参考文献 1 综述 因工作需要,最近调研了超声(UltraSound)影像的相关知识,包含超声类型、超声影像的去噪和增强,目标检测等,并对相关资料文献进行梳理整合。 本人另外一篇博文主要讲了UltraSound 影像与CT/MR

muyijames的博客 1万+

AIGC游戏本地化:用AI实现多语言自动翻译

游戏本地化是游戏全球化战略的关键环节,传统人工翻译方式成本高、周期长。本文旨在探讨如何利用AIGC技术实现高效、准确、低成本的游戏多语言自动翻译解决方案。我们将覆盖从文本翻译到语音合成的完整本地化流程,重点关注AI技术在游戏特定语境下的应用优化。文章首先介绍游戏本地化的核心挑战和AI解决方案,然后深入讲解关键技术原理,接着通过实战项目演示具体实现,最后讨论应用场景和未来趋势。AIGC:人工智能生成内容,指利用AI技术自动生成文本、图像、音频等内容本地化(Localization)

AI 领航者的博客 1336

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

一、Single Threaded Execution 模式介绍 简单的来说,Single threaded execution 模式描述了在一种多线程环境下各个线程对于公用资源的使用方式——任一时刻,只有一个线程可以使用该公用资源~ STE有三个关键部分:多线程、公有资源、唯一线程可使用;关于为什么使用多线程这个问题,答案是我们可以利用它来获得好处,这个好处就是我们系统的一部分性能将获得提高...

博采众长,自成一派; 1480

14、Java 中 TAF 和 FCF 的使用及 Oracle 数据库升级与迁移指南

本文详细介绍了Java中实现高可用性的TAF(透明应用故障转移)和FCF(快速连接故障转移)技术,以及如何将Oracle 9iR2 RAC环境升级到10gR2 RAC,并将数据从OCFS迁移到ASM。通过示例代码和操作步骤,帮助开发者和数据库管理员更好地应对数据库故障和数据迁移问题,提升系统的可用性和性能。

egg99的博客 108

Java多线程基础(三)——Single Threaded Execution模式

一、定义 Single Threaded Execution 是指“以1个线程执行”的意思,有时也称为Critical Section(临界区)。 二、模式案例 案例:假设有三个人,频繁地通过一扇门,规定每次只能通过一个人,当通过一个人时,程序会将通过的总人次加1,同时记录该次通过人的姓名和出生地。 门的定义: public class ...

weixin_33810006的博客 190

解决Home Assistant中安装的Advanced SSH & Web Terminal插件打开提示“502 Bad Gateway” 且弹窗提示“加载项似乎尚未准备就绪,它可能仍在启动中“问题

  在HomeAssistant的应用商店安装了【AdvancedSSH&WebTerminal】插件,但是打开这个终端连接到HomeAssistant的时候却提示“502BadGateway”且弹窗提示“加载项似乎尚未准备就绪,它可能仍在启动中,您想重试吗?”一直无法进入HomeAssistant的系统中

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 2828

LED灯闪烁实验:代码集成

LED灯闪烁实验已经全部完成,在该实验中使用了较多的工具链,涉及底层软件、建模、软件编译等。首先,通过STM32CubeMX工具进行STM32底层软件配置,可以大大减少手写代码的工作量。另外由于做了可视化,也降低了STM32的上手难度,提升效率。利用Simulink建模,可以在PC环境下验证应用层算法的正确性而不依赖于具体控制器,实现应用层算法和底层软件、控制器硬件的解耦。另外,图形化的建模方式也更加有利于开发者思考与分析,大量的封装库文件也可以降低开发的工作量。

u013288925的博客 368

java多线程之Single Threaded Execution模式

一、简介 所谓Single Threaded Execution模式,就是指“以一个线程执行”,就像一座独木桥同一时间内只允许一个人通过一样,该模式用于设置限制,以确保同一时间内只能让一个线程执行处理。 二、实例(无Single Threaded Execution) 首先,我们来看一下应该使用Single Threaded Execution模式却没有使用的程序,体会一下在多线程下无法正确执行的...

m0_37941483的博客 543

对称式目镜设计实例

对称式目镜设计实例

weixin_72050316的博客 1163

《图解Java多线程设计模式》笔记 Single Threaded Execution模式

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

276

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

java single threaded_Java 多线程设计模式之 Single Threades Execution

Single Threades Execution 模式所谓 Single Threades Execution 模式,意即“以一个线程执行”。就像独木桥同一时间内只允许一个人通行一样,该模式用于设置限制,以确保同一时间内只能让一个线程执行处理。Demo不使用 Single Threades Execution 模式的程序使用程序模拟三个人频繁地通过一个只允许一个人经过的门情形。当人们通过门的时候...

weixin_39835147的博客 163

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

读《图解java多线程设计模式》总结--Single Threaded Execution

1,Single Threaded Execution从名字上来看,就是一次只允许一条线程执行,其他还没有获得执行权力的只能等待。 2,适用范围:保护共享资源(SharedResource),防止多线程同时修改共享资源时造成混乱 3,实现方式:采用Synchronized来修饰操作共享资源的方法,相当于每次只允许一条线程执行该方法 4,图解,当线程1调用Synchronized方法修改共享...

kanganrui的专栏 353

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

JAVA多线程设计模式篇 2、Single Threaded Execution 模式——这一刻,我的眼里只有你

悟空、八戒跟师父请假要回去探亲。师父要求每个人请假要填上姓名、目的地。 弟子们很老实遵照执行,然而,当过了一段时间出了问题。我们看看问题出在哪里。

EndlessProcess的专栏 697

java单线程single_Java多线程基础(三)——Single Threaded Execution模式

一、定义Single Threaded Execution 是指“以1个线程执行”的意思,有时也称为Critical Section(临界区)。二、模式案例案例:假设有三个人,频繁地通过一扇门,规定每次只能通过一个人,当通过一个人时,程序会将通过的总人次加1,同时记录该次通过人的姓名和出生地。门的定义:public class Gate {private int counter = 0;priva...

weixin_39715187的博客 284

图解java多线程设计模式-第一章 Single Threaded Execution模式

以下内容是我在阅读《图解Java多线程设计模式》一书中的总结和思考 本章配语是:能通过这座桥的只有一个人 几个概念: SharedResource(共享资源):可以被多个线程访问的类,包含safeMethod和unsafeMethod。其中unsafeMethod就是在多线程环境下不安全的,需要同步的方法。 Single Threaded Execution模式:同一时间内只能让一个线程执...

Luke_R的博客 748

java 线程 设计模式_JAVA多线程设计模式一 Single Threaded Execution

public class Gate {private int counter = 0;private String name = "Nobody";private String address = "Nowhere";public synchronized void pass(String name, String address) {this.counter++;this.name = nam...

weixin_30151653的博客 106

JAVA多线程设计模式一 Single Threaded Execution

public class Gate { private int counter = 0; private String name = "Nobody"; private String address = "Nowhere"; public synchronized void pass(String name, String address) { this.coun...

chenxingzi的博客 99

图解多线程设计模式pdf_图解Java多线程设计模式pdf

精选12种与多线程和并发处理相关的设计模式264张图表 + 300段Java示例程序 = 轻松学习多线程编程1.图文并茂 通俗易懂日本资-深技术作家、《程序员的数学》作者结城浩执笔,264张图表(UML类图、时序图、Timethreads图等)穿插文中,通过类比手法和浅显的语言,逐一讲解与多线程和并发处理相关的12种设计模式。每章附带练习题和答案,自学者也可轻松学习2.专业实用 拓展进阶编写了30...

weixin_39790686的博客 757

java多线程设计模式——学习笔记(2)Single Threaded Execution Pattern

Single Threaded Execution Pattern是多线程中最为简单的一种模式,其用来限制同时只能让一个线程运行,用于多个线程共享资源的情况。 文章中举了一个例子来说明该模式的使用。程序模拟3个人频繁经过只能同时通过一个人的门,当人通过门时,程序会在计数器中递增通过人数,并记录通过人员的姓名和地址。 程序中使用的类如下表所示:

k763925053的专栏 867

java 多线程 分布式_Java多线程设计模式

1 线程中的几个方法解释Thread.sleep(long毫秒)在指定的时间内让当前线程休眠,将控制权交给其他线程,休眠的线程依旧拥有它所占用的锁,Thread.yield();暂停或者放弃当前正在执行的线程,并且执行其他线程,但是并没有释放该线程所拥有的锁,线程放弃后,让其他相同或者更高线程得以运行。t.join()在A线程中等待t线程,可以指定一定时间后继续执行或者无限等待t.interrup...

weixin_35645460的博客 352

Single Threaded Execution----java多线程设计模式(一)

                                          Single Threaded Execution                                          --------能通过这座桥的,只有一个通过      在多线程的设计中,我们最先关注的是sharedResource(共享资源)的确定。sharedResource是可

xingqisan的专栏 723

Java多线程设计模式

  Java语言的线程开始执行Java程序后,至少会有一个线程开始操作,有操作的是被称为主线程的线程,主线程执行输入类的main()。当main()里的所有处理均结束后,则主线程也同时结束。当应用程序的规模大到一定程度,程序里的多线程会以每种形式存在。以下是几个常见的范例:1)  GUI应用程序。2)  比较花费时间的I/O处理。3)  多个客户端。如欲启动线程时,有下列两种方法:1)  利用Th

cigarette_program的专栏 2045
上一篇: ThreadLocal "魔法"
下一篇: Java多线程模式之Immutable
NetFishTail
博客等级 码龄19年 3粉丝 120原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值