中级java每日一道面试题-2024年7月3日

题目:使用 Java 实现一个线程安全的计数器。

分析

要实现一个线程安全的计数器,可以使用 synchronized 关键字来保证对计数器的操作是线程安全的。以下是一个简单的实现示例:

java 复制代码
public class ThreadSafeCounter {
    private int counter;

    public synchronized void increment() {
        counter++;
    }

    public synchronized int getCounter() {
        return counter;
    }
}

在上述代码中,increment() 方法和 getCounter() 方法都使用了 synchronized 关键字来修饰,这确保了在多线程环境下,对计数器的操作是线程安全的。

解法

  1. 定义一个类来表示计数器,包含计数器的值和加 1 方法。
  2. 在加 1 方法中使用 synchronized 关键字来保证线程安全。
  3. 提供一个 getCounter 方法来获取计数器的值。

注意事项

  1. 使用 synchronized 关键字会导致性能下降,在多线程环境下,只有一个线程可以执行 synchronized 代码块,其他线程需要等待。如果线程数量较多,可能会影响性能。
  2. 如果计数器的操作非常频繁,可以考虑使用更高效的线程安全计数器实现,如 AtomicInteger 类。
  3. 在实际应用中,需要根据具体情况选择合适的线程安全计数器实现。
相关推荐
半聋半瞎2 分钟前
Flowable快速入门(Spring Boot整合版)
java·spring boot·后端·flowable
lly2024064 分钟前
jEasyUI 树形菜单添加节点
开发语言
AI职业加油站7 分钟前
Python技术应用工程师:互联网行业技能赋能者
大数据·开发语言·人工智能·python·数据分析
散峰而望11 分钟前
【算法竞赛】树
java·数据结构·c++·算法·leetcode·贪心算法·推荐算法
鱼很腾apoc14 分钟前
【实战篇】 第14期 算法竞赛_数据结构超详解(下)
c语言·开发语言·数据结构·学习·算法·青少年编程
芳草萋萋鹦鹉洲哦15 分钟前
后端C#,最好能跨平台,桌面应用框架如何选择?
开发语言·c#
毕设源码-邱学长18 分钟前
【开题答辩全过程】以 基于SpringBoot的理工学院学术档案管理系统为例,包含答辩的问题和答案
java·spring boot·后端
神奇小梵18 分钟前
c语言易错知识点
c语言·开发语言
人机与认知实验室19 分钟前
<span class=“js_title_inner“>如何看待特斯拉第三代Optimus机器人?</span>
开发语言·javascript·机器人·ecmascript·unix
shejizuopin22 分钟前
基于SSM的高校旧书交易系统的设计与实现(毕业论文)
java·mysql·毕业设计·论文·ssm·毕业论文·高校旧书交易系统的设计与实现