最简单的java单例

 最简单的java单例源代码:

 

class Singleton
{
 private Singleton()
 {

 }

 public static Singleton instance = null;

 public static Singleton getInstance()
 {
  if(instance == null)
   instance = new Singleton();
  return instance;
 } 

 public static void main(String args[])
 {
  Singleton s1, s2;

  s1 = Singleton.getInstance();
  s2 = Singleton.getInstance();

  System.out.println(s1 == s2);
  System.out.println(s1.equals(s2));

  System.out.println(s1);
  System.out.println(s2);
 }
}

/*
class Singleton
{
 private static int count = 0;

 private Singleton()
 {

 }

 public static Singleton instance = null;

 public static Singleton getInstance()
 {
  if(instance == null)
   instance = new Singleton();
  count++;
  return instance;
 }

 public static void display()
 {
  System.out.println(count);
 }

 public static void main(String args[])
 {
  Singleton s1, s2;

  s1 = Singleton.getInstance();
  s1.display();

  s2 = Singleton.getInstance();
  s2.display();

  System.out.println(s1 == s2);
  System.out.println(s1.equals(s2));

  System.out.println(s1);
  System.out.println(s2);
 }
}

*/

 

上述代码对于单线程的程序是不会有问题的,但是如果用于多线程,很可能产生问题。改进方法

将public static Singleton getInstance()改成public static synchronized Singleton getInstance()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/407856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

委托笔记

刚写了段程序,总算稍微理解了下委托,留下备忘。 定义: 1 publicdelegatestringDelegateTest(stringsss);类中实例化委托: 1 publicclassTestClass2 {3 publiceventDelegateTest _delegateTest;4 5 publicstringBeginDelegate()6 {…

react(90)--时间戳比较

if (new Date(values.activityTimeStamp[1]).getTime() <new Date(values.openTimeStamp[0]).getTime()) {message.error(开放给商户提报的结束时间要大于等于活动开始时间);return false;}

primefaces 带参数的组件

分析了一下primefaces extension showcase的源码&#xff0c;总结一下组件传参的方式。 下面定义了一个组件&#xff0c;名为fourTabsDecoratorCustom.xhtml 1: <html xmlns"http://www.w3.org/1999/xhtml" 2: xmlns:h"http://xmlns.jcp.org/jsf/html&…

枚举windows进程

将当前运行的进程列举出来(C Code): #include<windows.h>#include<tlhelp32.h>//#include <iomanip>#include<iostream>using namespace std; int main(){ int count0; PROCESSENTRY32 pe32; //使用这个数据之前设置大小 pe32.dwSizesiz…

程序员的职业发展

在中国有很多人都认为IT行为是吃青春饭的&#xff0c;如果过了30岁就很难有机会再发展下去&#xff01;其实现实并不是这样子的&#xff0c;现在过30岁的已经慢慢多起来了&#xff0c;也不见得混得不好。下面结合自己的经历&#xff0c;与大家一起探讨一下。 明确入行的目的 很…

C++ 20 协程总结

C 20 协程总结 介绍 C 20提供的是非对称的、一等对象、无栈的协程&#xff08;Coroutines in C20 are asymmetric, first-class, and stackless&#xff09; 所谓协程&#xff0c;即用户级线程&#xff0c;一种用于将异步代码同步化的编程机制&#xff0c;使得程序的执行流可…

VC++6.0开发环境之快捷键

F1&#xff1a; 帮助 CtrlO &#xff1a;Open CtrlP &#xff1a;Print CtrlN &#xff1a;New CtrlShiftF2 &#xff1a;清除所有书签 F2 &#xff1a;上一个书签 ShiftF2 &#xff1a;上一个书签 AltF2 &#xff1a;编辑书签 Ctrl&#xff0b;F2 &#xff1a;添加/删除一个书…

react(92)--批量删除进行置空操作

//批量删除handleDeleteAll () > {this.props.dispatch({type: startpage/updateState,payload: { selectedRowKeys: [] },});const { selectedRowKeys } this.props.startpage;if (selectedRowKeys.length 0) {message.error(当前未选择);return false;}this.deletePoin…

.net程序员的盲点(八):泛型

1.泛型介绍泛型类和泛型方法同时具备可重用性、类型安全和效率&#xff0c;这是非泛型类和非泛型方法无法具备的。泛型通常用在集合和在集合上运行的方法中。.NET Framework 2.0 版类库提供一个新的命名空间System.Collections.Generic&#xff0c;其中包含几个新的基于泛型的集…

C++20 协程实现线程同步示例

C20 协程实现线程同步示例 class Event { public:Event() default;Event(const Event&) delete;Event(Event&&) delete;Event& operator(const Event&) delete;Event& operator(Event&&) delete;class Awaiter;Awaiter operator co_await…

react(93)--成功置空

//删除页面逻辑的封装deletePointsDefinition (list) > {this.props.dispatch({type: activity/deleteActivityPopup,payload: {codeList: list,},callback: (res) > {console.log(res, res);if (res.returnCode 0) {message.success(操作成功);\this.props.dispatch({…

给窗口设置系统级或窗口级的热键

开发环境&#xff1a;VS2005, C#语言 为了给一个程序加一个系统级的热键&#xff0c;在开发时需要使用到下面的代码&#xff0c;就是在程序中注册和卸载热键。 1。首先在Form1类的函数中添加如下代码&#xff1a; [DllImport("user32.dll")] private static…

Sublime Text 插件之常用20个插件

作为一个开发者你不可能没听说过 Sublime Text。不过你没听说过也没关系&#xff0c;下面让你明白。 Sublime Text是一款非常精巧的文本编辑器&#xff0c;适合编写代码、做笔记、写文章。它用户界面十分整洁&#xff0c;功能非同凡响&#xff0c;性能快得出奇。这些非常棒的特…

JUnit 4 与 JUnit 3

JUnit 是 Java? 语言事实上的 标准单元测试库。JUnit 4 是该库三年以来最具里程碑意义的一次发布。它的新特性主要是通过采用 Java 5 中的标记&#xff08;annotation&#xff09;而不是利用子类、反射或命名机制来识别测试&#xff0c;从而简化测试。在本文中&#xff0c;执着…

输出特殊形状的图形

输出如下面这种形状的图形&#xff1a; 4 3 7 2 6 9 1 5 8 10 C Code: #include<iostream> using namespace std; //N: 代表有多少行元素void Display(int N){ int i, j, v; if(N < 0) { cout<<"N must bigger than Zero(0)!"<<endl<&l…

整合quickx到普通cocos2dx

quickx是对cocos2dx的lua扩展&#xff0c;它做了一些C的扩展&#xff0c;同时还在lua做了一些封装&#xff0c; 让用lua开发cocos2dx更快&#xff0c;中文站http://quick.cocoachina.com/。 由于现在的项目对cocos2dx有一些修改&#xff0c;又想用到quickx的便捷&#xff0c;于…

react(94)--时间搜索传值规范

console.log(data, dataTime);let startTimeLong (data?.time && new Date(data?.time[0]).getTime()) || ;let endTimeLong (data?.time && new Date(data?.time[1]).getTime()) || ;this.setState({name: data?.name,startTimeLong,endTimeLong,pageI…

我的项目-财务系统

4 名称&#xff1a;财务管理系统 时间&#xff1a;2000 用时&#xff1a;3个月 vb6sqlserver7 独立完成 描述&#xff1a;包含凭证输入&#xff0c;审核&#xff0c;记帐&#xff0c;帐簿管理&#xff0c;自动转帐&#xff0c;会计报表等财务管理的整个流程。此项目在兖州…

对二维数组进行Zig-Zag扫描(C++)

对二维数组进行Zig-Zag扫描(C)&#xff0c;先自定义了一个类&#xff0c;类中有个函数Run()来实现这个扫描过程&#xff0c;二维数组是动态分配空间以及随机赋值的。 下图是Zig-Zag扫描方式&#xff1a; CZigZag.h: #include<iostream>using namespace std; typedef s…