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

MySQL阶段DAY20(附笔记)

 【注意】:工厂模式学习知识结构如下:

 (一)、单例模式

1.Single类:

使用懒汉式:对象的延迟加载,安全的,高效的应用
双重判断提升效率和安全性

package singleton;/** 单例设计模式之饿汉式(在多线程并发时不会有问题)不常用!public class Single {private Single(){}private static final Single s = new Single();public static Single getInstance(){return s;}
}-------------------------------------------------单例设计模式之懒汉式(在多线程并发时可能有问题,所以需要加锁)public class Single {private Single(){}private static  Single s = null;public static Single getInstance(){if(s ==null){s = new Single();}return s; }}----------------------------------------------------  public class Single {   //改进懒汉式,加锁private Single(){}private static  Single s = null;public static Single getInstance(){if(s==null){  //首先,可能会有多个线程到这一步认为都是空,所以这是一重判断synchronized(Single.class){//同步代码块:被锁住的代码块if(s ==null){//其次,不可能两个线程同时锁住,所以,这是二重判断s = new Single();}}}return s; }}* *///使用懒汉式:对象的延迟加载,安全的,高效的应用
//双重判断提升效率和安全性
public class Single {private Single(){}private static  Single s = null;//这里锁住方法,效率就低了,结果就是只有一个线程能用,那其余线程怎么办???只能等着,效率很低且没有意义。如果是把创建对象的方法锁住就明显有效率了!!!public static Single getInstance() {  if (s == null) {//双重判断synchronized (Single.class) {if (s == null) {//双重判断s = new Single();}}}return s;}}

2、Run类

package singleton;public class Run implements Runnable {public void run(){for(int x = 0 ;x<50 ;x++){Single s = Single.getInstance();System.out.println(s);}}}

3、Test

 * 设计模式:实际的软件开发,对问题的处理总结经验,设计模式。前提是面向对象
 * 
 * 23种设计模式
 * 
 *     单例设计模式:
 *         保证一个类的对象的唯一性
 *         私有构造方法
 *         在本类的成员位置,创造自己类的对象
 *         提供公共方法用来返回自己创建的对象
 * 
 * 单例在Java中的应用:Runtime

package singleton;/** 设计模式:实际的软件开发,对问题的处理总结经验,设计模式。前提是面向对象* * 23种设计模式* * 	单例设计模式:* 		保证一个类的对象的唯一性* 		私有构造方法* 		在本类的成员位置,创造自己类的对象* 		提供公共方法用来返回自己创建的对象* * 单例在Java中的应用:Runtime* * */public class Test {public static void main(String[] args) {Run r = new Run();//多线程new Thread(r).start();//第一个线程进来,判断对象是空,拿锁,自己创建唯一对象new Thread(r).start();//第二个进程进来,对象已不空,直接返回唯一对象!}}

(二)、简单工厂

1、

http://www.lryc.cn/news/94501.html

相关文章:

  • 考场作弊行为自动抓拍告警算法 yolov7
  • 在Linux中安装RabbitMQ
  • electron 单个实例控制以及日志输出
  • 基于matlab使用AprilTag标记进行相机校准(附源码)
  • 计算机网络————运输层
  • 【雕爷学编程】Arduino动手做(154)---AFMotor电机扩展板模块
  • 【RPC】—Protobuf入门
  • 【⑩MySQL】:表管理,让数据管理不再困难
  • Springboot项目使用原生Websocket
  • 在Vue 3中如何实现服务端渲染(SSR)
  • 【计算机组成原理期末课设作业】16位微型计算机实现——MOVS串传送扩展指令设计
  • CodeMirror 对 XML 文档熟悉及元素控制自定义
  • Jetpack - ViewModel
  • 【新版系统架构】第十三章-层次式架构设计理论与实践
  • 剖析Linux文件系统
  • 简介Maven结构与配置方法
  • 好用的网址6
  • MySQL数据库---笔记5
  • Yocto:初始
  • autodl算力租用平台应用于pycharm
  • 高德地图的使用
  • <List<Map<String,String>>> 删除元素常见的误区以及删除方法
  • Linux下的编辑器——vim的简单上手指南
  • C++多线程学习(二、多线程的几种创造方式【有返回值的之后讲】)
  • 前端开发框架生命周期详解:Vue、React和Angular
  • 【Java从入门到大牛】程序流程控制
  • UML学习统一建模语言
  • 【C++学习笔记】RAII思想——智能指针
  • ubantu配置python环境
  • 单向/双向V2G环境下分布式电源与电动汽车充电站联合配置方法(matlab代码)