中级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. 在实际应用中,需要根据具体情况选择合适的线程安全计数器实现。
相关推荐
取码网8 小时前
最新在线留言板系统PHP源码
开发语言·php
环黄金线HHJX.8 小时前
龙虾钳足启发的AI集群语言交互新范式
开发语言·人工智能·算法·编辑器·交互
不写八个8 小时前
PHP教程006:ThinkPHP项目入门
开发语言·php
helx828 小时前
SpringBoot中自定义Starter
java·spring boot·后端
_MyFavorite_8 小时前
JAVA重点基础、进阶知识及易错点总结(31)设计模式基础(单例、工厂)
java·开发语言·设计模式
ILYT NCTR9 小时前
SpringSecurity 实现token 认证
java
A.A呐9 小时前
【C++第二十三章】C++11
开发语言·c++
智算菩萨9 小时前
【Pygame】第8章 文字渲染与字体系统(支持中文字体)
开发语言·python·pygame
rleS IONS9 小时前
SpringBoot获取bean的几种方式
java·spring boot·后端
014-code9 小时前
Java SPI 实战:ServiceLoader 的正确打开方式(含类加载器坑)
java·开发语言