单例&多线程
来源:互联网 发布:淘宝上的卖家中心在哪 编辑:程序博客网 时间:2024/04/29 22:59
单例最常见的模式为:懒汉式和饿汉式,懒汉式在调用方法的时候才去实例化对象,饿汉式则是直接实例化对象。在多线程模式中,考虑到性能和线程安全,我们一般选择static inner class或者double check instance的单例模式。在性能提高的同时保证了线程安全
static inner class(静态内部类的形式)
public class Singletion {private static class InnerSingletion {private static Singletion single = new Singletion();}public static Singletion getInstance() {return InnerSingletion.single;}}
懒加载(懒汉模式)(double check instance)
public class DubbleSingleton {private static DubbleSingleton ds;public static DubbleSingleton getDs(){if(ds == null){try {//模拟初始化对象的准备时间...Thread.sleep(3000);} catch (InterruptedException e) {e.printStackTrace();}synchronized (DubbleSingleton.class) {if(ds == null){ds = new DubbleSingleton();}}}return ds;}public static void main(String[] args) {Thread t1 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println(DubbleSingleton.getDs().hashCode());}},"t1");Thread t2 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println(DubbleSingleton.getDs().hashCode());}},"t2");Thread t3 = new Thread(new Runnable() {@Overridepublic void run() {System.out.println(DubbleSingleton.getDs().hashCode());}},"t3");t1.start();t2.start();t3.start();}}
打印结果:
128627259012862725901286272590
0 0
- 单例多线程测试!
- java 单例 多线程
- Servlet:单例多线程
- Servlet 单例多线程
- Servlet 单例多线程
- Servlet 单例多线程
- 单例多线程
- 多线程单例模式
- 多线程单例
- Servlet 单例多线程
- Servlet 单例多线程
- Servlet 单例多线程
- Servlet 单例多线程
- Servlet 单例多线程
- Java单例多线程
- 多线程单例
- Servlet 单例多线程
- Servlet 单例多线程
- linux学习笔记(二)--用户、群组和权限
- python-3.5.2安装Django-1.8.17
- java,对象的克隆
- Spring MVC拦截器+注解方式实现防止表单重复提交
- 沙箱模式为什么要把window做为参数传进去?
- 单例&多线程
- redis学习之(一)redis安装
- 将数据临时存储起来,避免重复计算
- 运维学习第一次作业
- java常用工具
- 1619-7 张良 十二月二十五号总结 [连续第八十六天]
- WCF Rest用法
- 欢迎使用CSDN-markdown编辑器
- 使用session监听+spring MVC拦截器禁止用户重复登录