java设计模式
qq_34412985
Coding make me happy.
展开
-
多线程验证懒汉式单例设计模式线程安全问题
一.使用java8lambd测试main方法中:IntStream.range(0,10).forEach(i->new Thread(()->System.out.println(Thread.currentThread().getName()+"=====>>>>"+SingleTest.getInstance())).start());二....原创 2019-05-08 15:12:08 · 693 阅读 · 0 评论 -
单例设计模式及懒汉式线程安全问题解决方法
1.饿汉式:急切public class Singleton{private static Singleton singleton = new Singleton();//private保证不能被外部修改 static保证实例只有一个private Singleton(){};//保证不能被外部类实例化public Singleton getInstance(){retu...原创 2019-05-08 15:29:31 · 647 阅读 · 0 评论 -
单例模式为什么要用Volatile关键字
线程安全的单例模式常见写法是双重检查加锁。代码如下:class Singleton{ private volatile static Singleton singleton; private Singleton(){} public static Singleton getInstance(){ if(sing...原创 2019-05-08 19:16:36 · 1035 阅读 · 2 评论 -
模板方法设计模式
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。多线程中thread中的start方法实际调用了run方法,run方法程序员实现或不实现。工厂方法是特殊的模板方法。好莱坞原则:将决策权放在高层模块中,以便决定如何以及何时调用低层模块。Arrays.sort()模板方法,需要实...原创 2019-05-09 15:14:54 · 112 阅读 · 0 评论 -
代理设计模式
控制访问对象:为另一个对象提供一个替身或占位符以控制对这个对象的访问。远程代理(rmi rpc调用)nginx 服务消费方调用服务提供方 数据库代理中间件 缓存代理redis mongodb mysql缓存虚拟代理控制访问创建开销大的资源。没有图片或数据时 启用一个新线程显示正在加载中。。。的I con保护代理基于权限控制对资源的访问。类图:...原创 2019-05-09 18:32:51 · 99 阅读 · 0 评论