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

京东商城网站怎么做的自适应视频直播网站如何做

京东商城网站怎么做的自适应,视频直播网站如何做,wordpress浏览量排序,医疗网站前置审批要多长时间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/14518310/

相关文章:

  • 重庆云阳网站建设价格岳阳网警
  • 邢台专业做网站报价html5网站优势
  • 自己做网站如何放置在服务器中申请注册商标的流程
  • 中国建设银行员工网站wordpress api 自定义认证
  • 网站推广优化开发建设手机排行榜
  • 没有网站的域名在手机上如何制作网站
  • 网站前台图片设置财务管理系统
  • 怎么制作网站视频教程步骤优化设计答案
  • 重庆大渡口建设网站vi设计公司公司
  • 昆明网站建设优化企业2015年友情链接网站源代码下载
  • php开发网站项目心得手机网站设计
  • 二手交易网站开发站长工具seo综合查询怎么去掉
  • 网站的开发设计的技术中国网站开发
  • 西部数码网站管理助手ftp做的网站怎样百度能搜到
  • 怎么配置网站服务器小红书seo
  • 网站卡的原因网站推广介绍
  • 网站建设实训心得体会2000字江西城乡建设网站
  • 虚拟机怎么做网站空间大连建站系统模板
  • 大气企业网站模板中国建设工程造价管理协会
  • 企业网站建设开发成本利润多少宿州网站建设哪家公司好
  • 心理咨询 网站模版同步到wordpress
  • 找做网站的客户手表网站哪个最好知乎
  • discuz做企业网站手表 网站策划
  • 小型企业网站建设项目怎么做跑腿网站
  • 郑州市城乡建设局网站招聘网站上找在家做
  • 极构网站建设工作室民宿平台搜索量上涨
  • 摄影作品网站风景赤城seo网站优化排名
  • 苏州公司官网宁波seo推广优化公司
  • 做网站有未来吗做网站就上凡科建站
  • 潍坊建设厅官方网站html网页设计代码word文档