当前位置: 首页 > news >正文

江苏省医院网站建设管理规范万网有域名怎么建网站

江苏省医院网站建设管理规范,万网有域名怎么建网站,深圳网站建设怎么做,榆林建站网站建设1.单例模式 单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时#xff0c;为了防止频繁地创建对象使得内存飙升#xff0c;单例模式可以让程序仅在内存中创建一个对象#xff0c;让所有需要调用的地方都共享这一单例对象。…1.单例模式 单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时为了防止频繁地创建对象使得内存飙升单例模式可以让程序仅在内存中创建一个对象让所有需要调用的地方都共享这一单例对象。 1.1单例模式的类型 单例模式包含两种类型 饿汉式在类加载的时候已经创建好对象等待被使用懒汉式在真正需要使用对象的时候才去创建对象 1.2饿汉式创建单例对象 饿汉式在类加载的时候已经创建好该对象在程序调用的时候直接返回该对象即可不需要等到使用时再创建。 public class Singleton{private static final Singleton singleton new Singleton();//此时已经实例化好了一个对象内存中已经存在了因此不会再存在多个Singleton对象了private Singleton(){}public static Singleton getInstance() {return singleton;} } 1.3懒汉式创建单例对象 懒汉式创建单例对象就是在使用单例对象之前先判断是否已经被实例化了如果已经被实例化则可以直接使用否则才开始实例化。 public class Singleton {private static Singleton singleton;private Singleton(){}public static Singleton getInstance() {if (singleton null) {singleton new Singleton();}return singleton;}} 这就是一个懒汉式创建单例对象此时已经可以进行使用。但是还是存在一些问题。比如并发操作时两个线程同时判断该对象为空那么两个线程都会实例化对象所以就会创建两个对象已经不满足单例模式。 此时的解决办法就是在方法上加锁或者对类对象加锁如下 public static synchronized Singleton getInstance() {if (singleton null) {singleton new Singleton();}return singleton; } // 或者 public static Singleton getInstance() {synchronized(Singleton.class) { if (singleton null) {singleton new Singleton();}}return singleton; } 此时这样加锁就规避了两个线程同时创建对象当一个线程获取锁时另一个线程需要阻塞等待保证从始至终只创建一个对象。但是这样的话在每次获取对象时候都需要获取锁并发性能较差。 所以我们需要优化首先判断对象是不是为空如果为空才获取锁进行对象的实例化如果首次判断不为空那么直接可以使用对象不用再获取锁。 所以直接在方法上加锁的方式不可取因为无论如何每次都要获取锁 public static Singleton getInstance() {if (singleton null) { // 线程A和线程B同时看到singleton null如果不为null则直接返回singletonsynchronized(Singleton.class) { // 线程A或线程B获得该锁进行初始化if (singleton null) { // 其中一个线程进入该分支另外一个线程则不会进入该分支singleton new Singleton();}}}return singleton; } 1.4加入volatile防止指令重排序 创建一个对象在JVM中会经过三步 1为singleton分配内存空间 2初始化singleton对象 3将singleton指向分配好的内存空间 指令重排序是指JVM在保证最终结果正确的情况下可以不按照程序编码的顺序执行语句尽可能提高程序的性能 在这三步中第2、3步有可能会发生指令重排现象创建对象的顺序变为1-3-2会导致多个线程获取对象时有可能线程A创建对象的过程中执行了1、3步骤线程B判断singleton已经不为空获取到未初始化的singleton对象就会报NPE异常。文字较为晦涩可以看流程图 使用volatile关键字可以防止指令重排序volatile可以保证指令执行顺序与程序指明顺序一致不会发生改变。 public class Singleton {private static volatile Singleton singleton;private Singleton(){}public static Singleton getInstance() {if (singleton null) { // 线程A和线程B同时看到singleton null如果不为null则直接返回singletonsynchronized(Singleton.class) { // 线程A或线程B获得该锁进行初始化if (singleton null) { // 其中一个线程进入该分支另外一个线程则不会进入该分支singleton new Singleton();}}}return singleton;}} 2.线程池 线程池顾名思义就是一次创建多条线程放在一个池子里用的时候拿出来一个用完之后放回去。 在实际业务中需要用到许多线程虽然创建线程相比于创建进程来说比较轻量级但是频繁的创建销毁也会消耗很多的资源。线程池最大的好处就是减少每次启动销毁线程的损耗。  2.1jdk中默认线程池 public static void main(String[] args) {// 1. 用来处理大量短时间工作任务的线程池,如果池中没有可用的线程将创建新的线程如果线程空闲60秒将收回并移出缓存ExecutorService cachedThreadPool Executors.newCachedThreadPool();// 2. 创建一个操作无界队列且固定大小线程池ExecutorService fixedThreadPool Executors.newFixedThreadPool(3);// 3. 创建一个操作无界队列且只有一个工作线程的线程池ExecutorService singleThreadExecutor Executors.newSingleThreadExecutor();// 4. 创建一个单线程执行器可以在给定时间后执行或定期执行。ScheduledExecutorService singleThreadScheduledExecutor Executors.newSingleThreadScheduledExecutor();// 5. 创建一个指定大小的线程池可以在给定时间后执行或定期执行。ScheduledExecutorService scheduledThreadPool Executors.newScheduledThreadPool(3);// 6. 创建一个指定大小不传入参数为当前机器CPU核心数的线程池并行地处理任务不保证处理顺序Executors.newWorkStealingPool();} 2.2创建系统自带的线程池 ThreadPoolExecutor threadPoolExecutor new ThreadPoolExecutor(5,//核心线程数10,//最大线程数1,//临时线程存活的时间TimeUnit.SECONDS,//时间单位new LinkedBlockingQueue(20),//阻塞队列类型}; 2.3线程池的工作流程 2.4拒绝策略 ThreadPoolExecutor.AbortPolicy这个策略是直接拒绝也是默认的策略 ThreadPoolExecutor.CallerRunsPolicy将任务返回给调用者(调用的线程) ThreadPoolExecutor.DiscardOldestPolicy放弃最早等待的任务 ThreadPoolExecutor.DiscardPolicy放弃最新的任务
http://www.hkea.cn/news/14378390/

相关文章:

  • 网站开发 慕课网站快速排名优化
  • 电子商务网站建设的流程济宁医院网站建设
  • 网站与域名的区别建站公司 深圳
  • 小米wifi设置网址入口网站dede网站qq类资源源码
  • 网站运营的提成方案怎么做岳阳网站建设哪里便宜
  • 莆田高端网站建设沈阳网站建设公众号
  • 建设项目环境影响登记表网站博物馆网站做的最好的
  • 网站内容的编辑和更新怎么做的35互联做的网站后台怎样登录
  • 网站建设课程性质网站建设的公司地址
  • wordpress 静态 弊端淄博网站优化推广
  • 周口建设公司网站网站推广营销方案
  • 互联网 现代农业网站建设市政建设招标网站有哪些
  • 全网营销公司详细描述如何进行搜索引擎的优化
  • 沧州网站运营公司建筑 企业官网设计
  • 燕莎做网站企业官网网站模板
  • 校园网站建设情况苏州现代建设公司网站
  • 教人做辐射4mod的网站徐州手工活外发加工网
  • 网站 系统设置织梦网站logo
  • 曲靖网站网站建设建站技术布局方式
  • 在线教育自助网站建设平台仙桃网站定制
  • 网站设计工具有哪些抖音网页版小程序入口
  • 建设网站的调研报告中信建设有限责任公司项目人员配置
  • 做外汇看什么网站忘记网站管理员密码
  • 做ppt的图片素材网站中山网站建设哪家强
  • 企业建站的目的是什么开发公司与物业公司交接清单
  • 外贸网站建设网页无锡建设工程质量监督网站
  • 网站建设的类型或分类网站公告建设方案
  • 高毅资产网站谁做的广州市建设局官方网站
  • 建立网站导航栏的方法重庆网络推广交流
  • 配资网站建设wordpress图文列表插件