中级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 分钟前
Kotlin 修改安装到桌面后的应用图标
开发语言·kotlin·harmonyos
来来走走3 分钟前
Android开发(Kotlin) ViewModel基本用法
android·开发语言·kotlin
小兔崽子去哪了7 分钟前
Docker部署ZLMediaKit流媒体服务器并自定义配置指南
java·后端·容器
程序猿小蒜8 分钟前
基于springboot的人口老龄化社区服务与管理平台
java·前端·spring boot·后端·spring
Caarlossss13 分钟前
jdbc学习
java·开发语言·学习·http·tomcat·maven
lsx20240620 分钟前
Bootstrap 标签详解
开发语言
Coder-coco27 分钟前
个人健康系统|健康管理|基于java+Android+微信小程序的个人健康系统设计与实现(源码+数据库+文档)
android·java·vue.js·spring boot·微信小程序·论文·个人健康系统
断剑zou天涯35 分钟前
【算法笔记】从暴力递归到动态规划(二)
java·算法·动态规划
FL162386312938 分钟前
Qt自定义控件之仪表盘和水波纹圆形进度条的完整实现
开发语言·qt
Boop_wu1 小时前
[Java EE] 多线程编程初阶
java·jvm·算法