[Java教程]java 懒汉式

0

2016-07-28 01:00:06

2016-07-28 00:10:14

懒汉式:

class text

{    public String k;

private static text t=null;//右边代码结构比上边饿汉式繁琐,可能出现安全问题

privatetest(){} //安全问题无疑是违背这个程序的初衷就是可以创建多个实例

public static text getObject()

{   //多线程的时候,运行状态到就绪状态(简单的说就是线程失去了CPU的执行权)

if (t==null)

{   //---------->到就绪区 Tread1,Tread2依次卧倒(线程失去了CPU的执行权)

t=new text(); //显而易见以上两个线程创建了两个实例

return t; //在cup负荷时候进程多而线程为进程的执行单位在切换时可能出现以上情况

}

return t;

}

}

//那么如何解决以上问题

代码如下:

class test

{    public String k;

private static text t=null;

privatetest(){}

public static text getObject()

{

if (t==null)

//外面新增一个判断为一旦生成一个对象后就不在判断锁的问题

//  来优化代码(节省时间)

{   synchronized(test.class){   //在此有锁,只能进入一个线程就不会出现 多个线程创建多个实例

if(t==null){

t=new text();  // 补充:因为此时方法为静态不能调用this,

return t;     //所以调用已经生成的类名.class 字节码对象;

//下面有更详细对test.class补充

}

}

}

return t;

}

-------------------------------------------------------我是分隔符---------------------------------------------------

补充:

单例模式:

饿汉式:

/*饿汉式*/

/*class test

{  public String k;

private static final text t=new text();//正规写法把final 写上 成为一个不可以改变的常量

private text(){}

public static text getObject(){

return t;     //在加载的类的时候就生成了对象,代码结构简单基本不存在安全问题

//在加载类时要比懒汉式要费时长,调用对象时比懒汉式时间段

}

获取字节码对象的方式其一:

类名.class,你可以理解为字节码本身就是静态的,类加载的时字节码就进JVM了。所以类.class好比类调用静态方法似得调用字节码对象。

------------------------------------说明----------------------------------------------------------------------------------------------------------------

本人不过大一学生,第一次写学习感悟.以上如果程序有问题或者描述不清请留言谢谢.

如果大家有更好的方法希望互相学习共同进步.ljs.

本文网址:http://www.shaoqun.com/a/242391.html

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

JAVA

0

java懒汉,[Java教程]java 懒汉式相关推荐

  1. Java Date Time 教程-java.sql.Date

    Java的java.sql.Date类在JDBC API中被使用.如果你需要在java.sql.PreparedStatement上设置日期或者从java.sql.ResultSet获取日期,你将会和 ...

  2. Java详细安装教程--Java(jdk)安装

    Java详细安装教程–Java(jdk)安装 一.java历史简介 1991 年Sun公司的James Gosling等人开始开发名称为 Oak (橡树)的语言.希望用于控制嵌入在有线电视交换盒.PD ...

  3. java 导出excel教程,[Java教程]导出大量数据到Excel的一种方式

    [Java教程]导出大量数据到Excel的一种方式 0 2012-07-09 17:00:11 在Java Web开发中,经常需要导出大量的数据到Excel,使用POI.JXL直接生成Excel,很容 ...

  4. java操作jedis_Redis教程 —— Java池化JedisPool操作Jedis

    今天再学习一下Redis的池化操作jedis,接着上一篇文章 Redis教程 -- Java操作Redis增删改查(基础操作) 我是用的是jedis2.9版本,池化操作依赖与common-pool2. ...

  5. Java Date Time 教程-java.sql.Timestamp

    Java的java.sql.Timestamp类在JDBC API中被使用.如果你需要在java.sql.PreparedStatement上设置日期+时间或者从java.sql.ResultSet获 ...

  6. JAVA基础入门教程——Java介绍

    1. Java简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计语言和Java平台的总称,目前由Oracle拥有. Java可运行于多个平台,如Win ...

  7. Java程序入门教程 | Java

    有一个朋友这样告诉我:Java太难了!上课老师不讲代码,我怎么学?! 我也发现了,以我们学校为例吧.很多Java教学者似乎不太愿意细嗦代码怎么写.(在大一已经学习过C语言的基础上,Java其实真的很简 ...

  8. JAVA数组编程教程,Java入门超经典内部教程-数组

    Java入门超经典内部教程-数组-1.jpg (31.84 KB, 下载次数: 0) 2018-8-18 17:18 上传 叩丁狼教育Java基础教程 1. 数组 1.1. JVM内存模型(掌握) J ...

  9. java 雷霆战机 教程,java swing实现简单的雷霆战机小游戏项目源码附带视频指导修改教程...

    <p> <span style="font-family:微软雅黑;font-size:19px;color:#666666;background-color:#FFFFF ...

  10. java 随机数种子 java设置随机数种子教程 java随机数种子怎么设置

    我们常用的随机数生成就是Math.random(): java.util.Random类有两种方式构建方式:带种子和不带种子 import java.util.Random; 不带种子: 不带种子将会 ...

最新文章

  1. js数组去重的四种方法
  2. 软考数据流图设计大观
  3. ABAP小写金额转大写
  4. 如何优雅而又不失内涵的在centos7下安装tree命令
  5. 使用nginx部署简单的前端项目,nginx.conf配置
  6. java robot 控制 不用用户 界面_编写一个基于Java Robot类的屏幕捕获工具
  7. golang利用json.Unmarshal转json为map、slice类型
  8. ApacheCN React 译文集 20211118 更新
  9. 域控服务器取消验证_AD域控
  10. XCode下的iOS单元测试
  11. 函数参数缺少const导致so无法加载
  12. response Headers与request Headers字段详解(收藏)
  13. 计算机网络教室验收标准,计算机网络教室建设和配备要求
  14. pythonsqlite加锁_Python SQLite:数据库被锁定
  15. leetcode:6071. 完成所有任务需要的最少轮数【尽可能的多一点3】
  16. nacos 默认 namespace: public 拿不到数据
  17. 多线程同步有几种实现方法C语言,线程同步与并发
  18. mac 升级java_mac版java更新升级方法
  19. pandas已知数值怎么找位置_pandas.dataframe中根据条件获取元素所在的位置方法(索引)...
  20. 不可思议有氧机器人_不思议迷宫机器人生产线选什么好 机器人合成公式一览...

热门文章

  1. TensorFlow人工智能入门教程之十一 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)...
  2. python md5加密
  3. CGI form标签学习
  4. asp.net 下载大文件
  5. ASP.NET Framework深度历险(2)
  6. 华为机试HJ72:百钱买百鸡问题
  7. python open写入_Python open读写文件实现脚本
  8. ogg初始化mysql数据_利用OGG进行数据库表的初始化
  9. 如何在NVIDIA(英伟达)官网下载老版本Toolkit-SDK---例如下载CUDA Toolkit 8.0
  10. 表单html遇到的问题及处理,Web前端开发中常见问题及解决方案