「单态java」单态氧

博主:adminadmin 2022-11-27 03:13:06 73

今天给各位分享单态java的知识,其中也会对单态氧进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

编写一个JAVA类,要求实现类的单态设计模式

package org.jdbc.util;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

//单例模式

public class JdbcUtilsSing {

private String url="jdbc:mysql://localhost:3306/hehe";

private String user = "root";

private String password = "k517liyu";

private static JdbcUtilsSing instance ;

//私有构造函数,不能被外部创建实例

private JdbcUtilsSing() {

}

public static JdbcUtilsSing getInstance() {

//双重检查,保证只会创建一个实例

if(instance == null) {

//防止2个以上的请求并发访问

synchronized (JdbcUtilsSing.class) {

//第一个请求创建实例后,保证后面拿到锁的请求不在创建新的实例

if(instance == null) {

instance = new JdbcUtilsSing();

}

}

}

return instance;

}

//静态代码块在类加载进内存的时候就自动执行

static {

try {

Class.forName("com.mysql.jdbc.Driver");

} catch (ClassNotFoundException e) {

throw new ExceptionInInitializerError();

}

}

//获得连接

public Connection getConnection() throws SQLException {

return DriverManager.getConnection(url,user,password);

}

//释放资源

public void free(ResultSet rs,Statement st,Connection conn) {

try {

if(rs != null){rs.close();}

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

if(st != null) {st.close();}

} catch (SQLException e) {

e.printStackTrace();

} finally {

try {

if(conn != null) {conn.close();}

} catch (SQLException e) {

e.printStackTrace();

}

}

}

}

}

请教关于java的单态模式

从你的代码来看只有调用getInstance()方法,才会运行System.out.println("here run init()"); 这一句吧。

就算是在properties.load(...)这一句时构造函数又加载了一次,也不会输出"here run init()"这一句啊~

晕了~

=========================================================

我编译了下你这段代码(稍微有点修改)

import java.util.*;

public class Test{

private static Test instance = null;

public static synchronized Test getInstance() {

if(instance==null){

System.out.println("here run init()");

instance = new Test();

}

return instance;

}

private Test() {

init();

}

private void init(){

Properties p = new Properties();

try{

p.load(Test.class.getResourceAsStream("/option.properties"));

//以下是取配置,设置初始化配置的代码,此处略掉

}catch(Exception ioEx){

System.out.println("配置文件option.properties不存在");

}

}

public static void main(String[] args){

Test t1 = Test.getInstance();

Test t2 = Test.getInstance();

System.out.println(t1 == t2);

}

}

结果输出:

here run init()

配置文件option.properties不存在

true

只有一次……没什么问题啊~

===============================================

我把文件创建了,又运行了一次,输出:

here run init()

true

还是只有一次……没什么问题~

==============================================

对了

p.load(new FileInputStream("option.properties"));

这样也可以

===============================================

我装的 Java 6 Update 10

对了,你的电脑是双核的吗?

可能是双核的原因

同步出现了问题

使对象初始化了两次

我家的单核的……

以前在学校学线程那一块的时候

就因为双核的原因,有的例子老是出问题

java中单态模式或单例模式(Singleton)有什么意义?

你好!

存在某些类不需要实例化多次,也就是说

该类一般没有非静态的成员变量,只需要在系统运行时实例化一次就可以了,所以就存在单例模式

如有疑问,请追问。

java里,什么是单态,什么是多态

单态是一种设计模式,作用是保证在Java应用程序中,一个类Class只有一个实例存在。

多态嘛就是父类实例化不同的子类得到不同的结果,例如老虎和羊的父类是动物,老虎和羊都有一个方法就是吃,当分别用老虎和羊来实例化动物类并调用吃的方法时,一个是吃肉,一个是吃草,这种区别就是多态。

什么是单态模式设计及好处

单态模式是java里的一种设计思想 意思是 一个类只有一个实例存在 其他的操作都来用这个实例 其运用的好处就是节省了内存public Singleton {

private Singleton{}

private Singleton instance = Singleton;

public Singleton getInstance {

instance;

}

}

还有一种形式就是这里public Singleton {

private Singleton instance = null;

public synchronized Singleton getInstance {

(instancenull)

instance= Singleton;

instance; }

}

单态模式中 Singleton.getInstance()可以访问单态类

关于单态java和单态氧的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

The End

发布于:2022-11-27,除非注明,否则均为首码项目网原创文章,转载请注明出处。