JUC-synchronized练习-交替打印ABC

news2024/12/25 15:38:07

今天来练习一下synchronized

简单来利用synchronized实现一个字符串的交替打印

主要的实现设置一个全局的变量state,线程执行通过不断累加state,根据state对三取余的结果来判断该线程是否继续执行还是进入等待。并通过synchronized锁住一个共享变量lock来进行上锁。

最后创建三个线程并让其进入就绪态。

代码实现:

public class Test {
    private static final Object lock = new Object();
    private static volatile int state = 0;
    public static void main(String[] args) {
        Thread A = new Thread(new task("a", 0));
        Thread B = new Thread(new task("b", 1));
        Thread C = new Thread(new task("c", 2));
        A.start();
        B.start();
        C.start();
    }
    static class task implements Runnable {
        private String s;
        private int x;
        public task(String s, int x) {
            this.s = s;
            this.x = x;
        }
        @Override
        public void run() {
            while(true) {
                synchronized (lock) {
                    while (state % 3 != x) {
                        try {
                            lock.wait();
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                    }
                    System.out.println(s);
                    state++;
                    lock.notifyAll();
                }
            }
        }
    }
}

结果展示:结果会一直交替打印abc

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1649840.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

excel如何将多列数据转换为一列?

这个数据整理借用数据透视表也可以做到: 1.先将数据源的表头补齐,“姓名” 2.点击插入选项卡,数据透视表,在弹出对话框中,数据透视位置选择 现有工作表,(实际使用时新建也没有问题)…

SD-WAN对云服务的优化

在云服务日益普及的当下,SD-WAN技术正成为众多企业优化网络连接的首选方案。其通过优化云集成和连接,以及增强应用程序性能,为企业带来了前所未有的业务效益。这种革新性的云连接方式极大地促进了企业对全球劳动力和潜在客户的触达能力。 软件…

6.Nginx

Nginx反向代理 将前端发送的动态请求有Nginx转发到后端服务器 那为何要多一步转发而不直接发送到后端呢? 反向代理的好处: 提高访问速度(可以在nginx做缓存,如果请求的是同样的接口地址,这样就不用多次请求后端&#…

TinyXML-2介绍

1.简介 TinyXML-2 是一个简单、小巧的 C XML 解析库,它是 TinyXML 的一个改进版本,专注于易用性和性能。TinyXML-2 用于读取、修改和创建 XML 文档。它不依赖于外部库,并且可以很容易地集成到项目中。 tinyXML-2 的主要特点包括&#xff1a…

下一代Nginx? OpenNjet 的入门实践

何为 OpenNjet ? OpenNJet 应用引擎是基于 NGINX 的面向互联网和云原生应用提供的运行时组态服务程序,作为底层引擎,OpenNJet 实现了NGINX 云原生功能增强、安全加固和代码重构,利用动态加载机制可以实现不同的产品形态&#xff0…

在Java中如何有效地处理内存泄露

在Java中,处理内存泄露有多种方法,以下是其中三种常见的方法及其原理和适用场景: ## 1. 合理使用垃圾回收机制 Java中的垃圾回收机制(Garbage Collection,GC)是一种自动化的内存管理技术,它可以…

如何获得一个Oracle 23ai数据库(Virtual Appliance)

准确的说,是Oracle 23ai Free Developer版,因为企业版目前只在云上(OCI和Azure)和ECC上提供。 方法包括3种,本文介绍第1种: Virtual ApplianceRPM安装Docker 从此处下载虚拟机。 可以看到虚拟机需要4G内…

表空间的创建

目录 表空间创建的语法 表空间创建的例子 创建一个永久性表空间,设置表空间初始大小为100MB,自动扩展为 100MB,无最大大小限制,并且该表空间为在线状态,产生日志 创建一个永久性表空间,通过本地化管理方…

AI编码时代到来?实现编程梦想的利器—Baidu Comate测评

文章目录 Comate智能编码是什么?Comate支持的环境 Comate应用安装实际操作对话式生成代码生成代码注释智能单测项目测试调优功能 总结 Comate智能编码是什么? 在如今这个拥抱AI的时代,市面上已经产出了很多Ai代码助手,如果你还没…

无法添加以供审核,提交以供审核时遇到意外错误。如果问题仍然存在,请联系我们

遇到问题: 无法添加以供审核 要开始审核流程,必须提供以下项目: 提交以供审核时遇到意外错误。如果问题仍然存在,请联系我们。 解决办法: 修改备案号为小写, 例如:京ICP备2023013223号-2A 改…

酸奶(科普)

酸奶(yogurt)是一种酸甜口味的牛奶饮品,是以牛奶为原料,经过巴氏杀菌后再向牛奶中添加有益菌(发酵剂),经发酵后,再冷却灌装的一种牛奶制品。市场上酸奶制品多以凝固型、搅拌型和添加…

Verilog刷题笔记47

题目: From a 1000 Hz clock, derive a 1 Hz signal, called OneHertz, that could be used to drive an Enable signal for a set of hour/minute/second counters to create a digital wall clock. Since we want the clock to count once per second, the OneHer…

3行代码,实现一个取色器

前言 今天发现了一个很好玩的 API ——EyeDropper。 EyeDropper API 提供了一种创建拾色器工具的机制。使用该工具,用户可以从屏幕上取样颜色,包括浏览器窗口之外的区域。 这是 MDN 上对它的介绍,可以取包括浏览器窗口之外的区域。我们一起看看是怎么个事 什么是取色器 取…

Ecovadis认证是什么?

Ecovadis认证是一种企业社会责任(CSR)评估和评级的认证,旨在衡量企业在环境、劳工和人权、道德以及可持续采购四个方面的可持续发展表现。该认证已成为全球范围内许多公司和组织的评估标准之一,有助于提高企业的会声誉和可持续发展…

医药垃圾分类管理系统|基于SSM医药垃圾分类管理系统的系统设计与实现(源码+数据库+文档)

医药垃圾分类管理系统 目录 基于SSM医药垃圾分类管理系统设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统登录模块 2管理员模块实现 3用户模块实现 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获取: 博…

找不到模块“vue-router”。你的意思是要将 moduleResolution 选项设置为 node,还是要将别名添加到 paths 选项中?

在tsconfig.app.json中添加,记得一定是 tsconfig.app.json 中,如添加到 tsconfig.node.json 还是会报错的 哈哈哈哈,不瞒你们,我就添加错了,哈哈哈。所以这也算写一个demo提醒自己 "compilerOptions": {&qu…

FTP协议与工作原理

一、FTP协议 FTP(FileTransferProtocol)文件传输协议:用于Internet上的控制文件的双向传输,是一个应用程序(Application)。基于不同的操作系统有不同的FTP应用程序,而所有这些应用程序都遵守同…

四川景源畅信:抖音的运营策略有哪些?

在数字营销的大潮中,抖音以其巨大的用户基础和强大的传播力成为众多品牌和商家的必争之地。那么,抖音的运营策略有哪些呢?这个问题涉及到内容创作、用户互动、数据分析和品牌合作等多个方面。 一、内容创作与优化在抖音,内容是吸引用户的关键…

无卤素产品是什么?有什么作用?

无卤素产品,即在生产过程中完全不使用卤素元素——氟、氯、溴、碘等——的产品。 卤素元素,虽然在电子设备、材料等领域应用广泛,却也可能潜藏危害。其阻燃剂,一旦在产品生命周期结束后释放,将对土壤和水体造成污染&a…

代码随想录day19day20打卡

二叉树 1 二叉树的最大深度和最小深度 最大深度已经学习过了,实质就是递归的去判断左右子节点的深度,然后对其进行返回。 附加两个学习的部分: (1)使用前序遍历的方法求解 int result; void getdepth(TreeNode* nod…