佛山网站建设策划中,网站运营的具体工作包括哪些内容?

摘要:网站运营的具体工作包括哪些,佛山网站建设策划,做相亲网站赚钱吗,怎么做网页的欢迎页面线程安全的单例模式 饿汉模式懒汉模式单线程版多线程版多线程版(改进) 单例模式能保证某个类在程序中只存在 唯一 一份实例, 而不会创建出多个实例&a
网站运营的具体工作包括哪些,佛山网站建设策划,做相亲网站赚钱吗,怎么做网页的欢迎页面线程安全的单例模式 饿汉模式懒汉模式单线程版多线程版多线程版(改进) 单例模式能保证某个类在程序中只存在 唯一 一份实例, 而不会创建出多个实例#xff0c;从而节约了资源并实现数据共享。 比如 JDBC 中的 DataSource 实例就只需要一个. 单例模式具体的实现方式, 分成 “饿… 线程安全的单例模式 饿汉模式懒汉模式单线程版多线程版多线程版(改进) 单例模式能保证某个类在程序中只存在 唯一 一份实例, 而不会创建出多个实例从而节约了资源并实现数据共享。 比如 JDBC 中的 DataSource 实例就只需要一个. 单例模式具体的实现方式, 分成 “饿汉” 和 “懒汉” 两种. 饿汉模式 类加载的同时, 创建实例. class Singleton {private static Singleton instance new Singleton();// 私有化构造方法防止外部创建实例private Singleton() {}public static Singleton getInstance() {return instance;}}注意 使用 static 修饰 instance该实例就是该类的唯一实例。要私有化构造方法防止外部创建实例。饿汉模式中线程只读取了实例所以是线程安全的。 懒汉模式 单线程版 类加载的时候不创建实例. 只有真正第一次使用它的时候才创建实例. class Singleton {private static Singleton instance null;private Singleton() {}public static Singleton getInstance() {if (instance null) {instance new Singleton();}return instance;} }多线程版 上面的懒汉模式的实现是线程不安全的. 线程安全问题详解 因为这里面 读取 和 修改 instance 是两个操作不是原子操作线程安全问题发生在首次创建实例时. 如果在多个线程中同时调用 getInstance 方法, 就可能导致创建出多个实例. class Singleton {private static Singleton instance null;private Singleton() {}public synchronized static Singleton getInstance() {if (instance null) {instance new Singleton();}return instance;} }注意 针对 Singleton 类对象加锁类对象在一个程序中只能有一份保证所有线程调用 getInstance 方法时针对同一个对象进行加锁。 多线程版(改进) 代码可能出现线程安全问题的时机就在第一次创建实例时一旦实例已经创建好了, 后面再多线程环境调用 getInstance 就不再有线程安全问题了(不再修改 instance 了) 按照上面的加锁方式不管是否会发生线程安全问题都会加锁即使初始化之后线程安全了仍然存在大量锁竞争降低了程序的效率。 所以在加锁的基础上, 做出了进一步改动: 使用双重 if 判定, 降低锁竞争的频率 。给 instance 加上了 volatile 保证内存可见性以及防止指令重排序。 class Singleton {private static volatile Singleton instance null;private Singleton() {}public static Singleton getInstance() {if (instance null) {synchronized (Singleton.class) {if (instance null) {instance new Singleton();}}}return instance;} }为什么要双重 if 判定 加锁 / 解锁是一件开销比较高的事情. 而懒汉模式的线程不安全 只是发生在首次创建实例的时候. 因此后续使用的时候, 不必再进行加锁了. 外层的 if 就是判定下看当前是否已经把 instance 实例创建出来了如果已经创建出来了就不用再加锁了。
阅读全文