对象单例与多线程是否冲突

问题

在学习 spring 的时候,我思考过这么个问题:

spring 容器中,每个对象都是独一份的,服务器并发量那么大,就一个对象,够用么?会不会竞争啥的啊?

换一种问法:假设有一个函数,需要 10 分钟才能跑完,两个线程都去调用它,第二个线程要不要等 10 分钟?

解释

其实没任何经验的,就能回答这个问题:

因为上课的时候,老师说过两个线程会同时进入一个函数。


仅仅只是调用函数,在不加锁的情况下,不论函数是否是静态的,多线程都是不会出问题的,并且这种调用是同时进行和线程安全的。

测试函数

不管老师说了啥,既然想到了,就写个函数测试一下。

package com.maker.test;

class AAA{
    public static void printf(){
        try {
            Thread.sleep(1000);
            System.out.println("AAA print");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

class BBB{
    public void printf(){
        try {
            Thread.sleep(1000);
            System.out.println("BBB print");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

public class Test2 {
    public static void main(String[] args) {
        {
            int cnt  = 10;
            while(cnt --> 0){
                new Thread(()->{
                    AAA.printf();
                }).start();
            }
        }
        {
            BBB bbb = new BBB();
            int cnt  = 10;
            while(cnt --> 0){
                new Thread(()->{
                    bbb.printf();
                }).start();
            }
        }
    }
}

posted on   疯狂的妞妞  阅读(329)  评论(0编辑  收藏  举报

(评论功能已被禁用)
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示