java 懒汉式--初步解决安全问题
2016-07-28 00:10:14
懒汉式:
class text
{ public String k;
private static text t=null;//右边代码结构比上边饿汉式繁琐,可能出现安全问题
private test(){} //安全问题无疑是违背这个程序的初衷就是可以创建多个实例
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;
private test(){}
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.
java 懒汉式--初步解决安全问题的更多相关文章
- 浅谈利用同步机制解决Java中的线程安全问题
我们知道大多数程序都不会是单线程程序,单线程程序的功能非常有限,我们假设一下所有的程序都是单线程程序,那么会带来怎样的结果呢?假如淘宝是单线程程序,一直都只能一个一个用户去访问,你要在网上买东西还得等 ...
- java中文乱码解决之道(九)-----总结
乱码,我们前台展示的杀手,可能有些朋友和我的经历一样:遇到乱码先按照自己的经验来解决,如果没有解决就google,运气好一搜就可以解决,运气不好可能够你折腾一番了.LZ之所以写这个系列博客就是因为遇到 ...
- java中文乱码解决之道(二)-----字符编码详解:基础知识 + ASCII + GB**
在上篇博文(java中文乱码解决之道(一)-----认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述字符集.字符编码等基础知识和ASCII.GB的详情. 一.基 ...
- java中文乱码解决之道(七)-----JSP页面编码过程
我们知道JSP页面是需要转换为servlet的,在转换过程中肯定是要进行编码的.在JSP转换为servlet过程中下面一段代码起到至关重要的作用. <%@ page language=" ...
- 循环列表的Java实现,解决约瑟夫环问题
import java.util.Scanner; /** * 循环列表的Java实现,解决约瑟夫环问题 * * @author LIU * */ public class LinkedList { ...
- adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决
adt-bundle-linux-x86_64-20131030下新建project提示找不到adb和R.java问题的解决 在ubuntu14.04下,搭建Android开发环境,下载官方的adt- ...
- 【转】Android中引入第三方Jar包的方法(java.lang.NoClassDefFoundError解决办法)
原文网址:http://www.blogjava.net/anchor110/articles/355699.html 1.在工程下新建lib文件夹,将需要的第三方包拷贝进来.2.将引用的第三方包,添 ...
- java中文乱码解决之道(二)—–字符编码详解:基础知识 + ASCII + GB**
原文出处:http://cmsblogs.com/?p=1412 在上篇博文(java中文乱码解决之道(一)—–认识字符集)中,LZ简单介绍了主流的字符编码,对各种编码都是点到为止,以下LZ将详细阐述 ...
- java.lang.UnsatisfiedLinkError解决方法汇集(转载)
我的解决方法: 将sigar.jar拷贝到/WEB-INF/lib/下,但这个方法不知道是不是终极解决办法,暂时没问题,其他方法可参考下面. 运行JSP报表程序页面出现java.lang.Unsati ...
随机推荐
- java 和javaw 的区别——<转>
java 和javaw 的区别 javaw.exe用法和java.exe 相同 javaw的程序不在java console 上面显示任何东西,如果在开发程序,就用java,这样可以看到错误提示, 如 ...
- mysql存储过程写法—动态参数运用
--删除 双击代码全选 1 drop procedure if exists up_common_select --创建 双击代码全选 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...
- bzoj2724
分块大法好!首先预处理第i块到第j块的答案,这是可以在O(n*tot)内处理出来的 tot表示块数然后考虑询问对于[l,r],答案只可能是[l,r]之间所夹整块[i,j]的答案和非整块中的位置上的数下 ...
- BestCoder Round #52 (div.1)
这周六BC和CF又差点打架,精力不够啊...结果打BC没起来,就看了一眼题跑了...今天早上补补吧,(因为今天晚上还要打UER= =) 先放官方题解: 1000 Victor and Machine ...
- LightOJ 1422 Halloween Costumes(记忆化搜索)
题意:给你n天分别要穿的衣服,可以套着穿,但是一旦脱下来就不能再穿了,问这n天要准备几件衣服. =============================================== ...
- Android数据加密解密
最近项目在维护过程中,估计这一周都会没有什么事情做了.于是开始打量自己做完的这个项目,项目在展示方面乏善可陈,然后仔细的想了想,这个项目的亮点无非就在数据加密和解密这一块了.因为是银行的项目,所以对数 ...
- 使用StaticResource给控件定义公共的样式和属性来写界面XAML
一:效果图 二:定义公共的样式和属性 在MainPage.xaml中 <phone:PhoneApplicationPage.Resources> <SolidColorBrush ...
- Partition List ——LeetCode
Given a linked list and a value x, partition it such that all nodes less than x come before nodes gr ...
- Find Minimum in Rotated Sorted Array——LeetCode
Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...
- datagridview bindingsource刷新数据
调用bindindsource的ResetBindings() 方法