`
chairmanMao
  • 浏览: 16104 次
  • 性别: Icon_minigender_1
  • 来自: 郑州
社区版块
存档分类
最新评论

spring单例是线程安全的吗?

阅读更多
我写一段代码来验证:
public class Singleton {
	int m=-1;
	private Singleton() {
    m=0;
	}

	private static Singleton instance = new Singleton();

	public static Singleton getInstance() {
		return instance;
	}
	public static void main(String[] args){
		Singleton single=Singleton.getInstance();
		NewThread t1=new NewThread();
		NewThread t2=new NewThread();
		NewThread t3=new NewThread();
		t1.setSingle(single);
		t2.setSingle(single);
		t3.setSingle(single);
		t1.start();
		t2.start();
		t3.start();
	}
}
class NewThread extends Thread{
    private Singleton single;
	public void setSingle(Singleton single) {
		this.single = single;
	}
	@Override
	public void run() {
		// TODO Auto-generated method stub
		super.run();
		for(int i=1;i<10;i++){
			single.m=i;
			System.out.println("current thread:"+Thread.currentThread()+"current m:"+single.m);
		}
	}
	
}

通过输出的结果来是:每个线程都输出了0~9,应该是线程安全的,但我不知道我这个测试逻辑上是否是正确的, ,谁能给个详细的解答?
分享到:
评论
1 楼 zuohan9109 2012-07-15  
测试的时候run()里面最好加上一个停顿,不然有可能测试不准确
public void run() {  
       for(int i=1;i<10;i++){  
            single.m=i;
           Thread.sleep(200);            System.out.println("current thread:"+Thread.currentThread()+"current m:"+single.m);  
        }  
    }  

相关推荐

    spring单例引起的线程安全问题

    一、spring单例与多例定义 单例:一个类只能产生一个对象(对应到spring中,注入的对象永远是同一个) 多例:一个类能产生多个对象(对应到spring中,注入的对象永远是新的) @Scope("prototype") @Scope("singleton...

    Spring面试专题.pdf

    13、Spring 框架中的单例 Beans 是线程安全的么? 14、请举例说明如何在 Spring 中注入一个 Java Collection? 15、如何向 Spring Bean 中注入一个 Java.util.Properties? 16、请解释 Spring Bean 的自动装配? 17...

    Spring面试题.zip

    13、Spring 框架中的单例 Beans 是线程安全的么? 14、请举例说明如何在 Spring 中注入一个 Java Collection? 15、如何向 Spring Bean 中注入一个 Java.util.Properties? 16、请解释 Spring Bean 的自动装配? 17...

    Spring面试题含答案.pdf

    26. Spring 框架中的单例 bean 是线程安全的吗? 27. 解释 Spring 框架中 bean 的生命周期 28. 哪些是重要的 bean 生命周期方法? 你能重载它们吗? 29. 什么是 Spring 的内部 bean? 30. 在 Spring 中如何注入一个...

    SSM框架面试题.pdf

    10. Spring框架中的单例Bean是线程安全的吗? 11. 什么是Spring Boot?与Spring有什么区别? 12. 解释Spring中的Java配置方式(@Configuration和@Bean注解)。 13. Spring中的事务传播行为有哪些? 14. 如何在Spring...

    25个经典的Spring面试问答

    Spring框架中的单例Beans是线程安全的么 请举例说明如何在Spring中注入一个Java Collection 如何向Spring Bean中注入一个JavautilProperties 请解释Spring Bean的自动装配 请解释自动装配模式的区别 如何开启基于...

    2023年最新java面试大全

    【01期】Spring,SpringMVC,SpringBoot,SpringCloud有什么区别和联系? 【02期】你能说说Spring框架中Bean的生命周期吗? 【03期】如何决定使用 HashMap 还是 TreeMap? 【04期】分库分表之后,id 主键如何处理...

    枚举类实现单例,并且解决序列化给前端展示的问题.zip

    本源码由 springboot 开发,只有2个简单的文件(1是 枚举类单例,2是 controller请求测试类)。 主要测试了枚举类的饿汉式加载机制 / 单例机制。 代码中包含枚举类的基本使用,和完整的请求示例。 主要实现了枚举类...

    java学习整理文档.docx

    java 学习整理文档 Spring框架并没有对单例bean进行任何多线程的封装处理。关于单例bean的线程安全和并发问题需要开发者自行去搞定 最浅显的解决办法就是将多态bean的作用域由“singleton”变更为“prototype”或者...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    【多线程】什么是线程安全与非线程安全 72 【多线程】多线程的实现方式Thread、Runnable、Callable 72 【多线程】实现Runnable接口与继承Thread类比较 73 【多线程】线程状态转换 74 【多线程】线程的调度 75 线程...

    Java并发编程原理与实战

    单例问题与线程安全性深入解析.mp4 理解自旋锁,死锁与重入锁.mp4 深入理解volatile原理与使用.mp4 JDK5提供的原子类的操作以及实现原理.mp4 Lock接口认识与使用.mp4 手动实现一个可重入锁.mp4 ...

    java面试题

    Collections是针对集合类的帮助类,它提供了一系列针对集合的搜索,排序,线程安全化等操作。 final、finally、finalize的区别? 答:final用于声明属性方法和类,分别表示:属性不可变,方法不可覆盖,类不可继承...

    JAVA超全面试突击包-答案讲义

    内容包括:Spring、SprngBoot、SpringCloud、Redis、MySQL、MyBatis、JVM、多线程和高并发、设计模式等 Spring框架:包括Spring的核心概念,如依赖注入和面向切面编程 Spring Boot:包括Spring Boot的基础知识,如...

    【Java设计模式】你对单例模式了解多少,一文深入探究

    不让第二步和第三步重排序-DoubleCheck方案二:基于类初始化-静态内部类饿汉式饿汉式与懒汉式最大区别序列化破坏单例模式原理枚举单例基于容器的单例模式基于TreadLocal线程单例源码分析-JDK源码分析-spring其他相关...

    2023Java高频面试题

    多线程编程:线程的基本概念、线程同步、线程安全、死锁等问题。 JDBC:Java与数据库的交互,连接池的使用等。 Spring框架:Spring框架的基础概念、IOC容器、AOP等。 Hibernate框架:Hibernate框架的基础概念、ORM...

    java核心面试

    线程 单例模式下的线程安全http://blog.sina.com.cn/s/blog_75247c770100yxpb.html map集合 集合数据结构及方法的使用 多线程 线程进程 线程状态 线程状态的改变 sql :临时表、游标、存贮过程、触发机制...

    java核心面试技术点

    线程 单例模式下的线程安全http://blog.sina.com.cn/s/blog_75247c770100yxpb.html map集合 集合数据结构及方法的使用 多线程 线程进程 线程状态 线程状态的改变 sql :临时表、游标、存贮过程、触发机制...

    java并发编程

    第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,死锁与重入锁00:24:58分钟 | 第18节深入理解volatile原理与使用00:28:30分钟 | 第19节JDK5提供的原子类的操作以及实现原理00:27:10分钟 | ...

    龙果java并发编程完整视频

    第16节单例问题与线程安全性深入解析00:27:15分钟 | 第17节理解自旋锁,死锁与重入锁00:24:58分钟 | 第18节深入理解volatile原理与使用00:28:30分钟 | 第19节JDK5提供的原子类的操作以及实现原理00:27:10分钟 | ...

Global site tag (gtag.js) - Google Analytics