0% found this document useful (0 votes)
3 views7 pages

Java Singleton Class

The document explains the Java Singleton Design Pattern, which ensures that a class has only one instance and provides global access to it. It discusses the advantages of using this pattern, such as memory efficiency and resource control, particularly in multithreaded applications. Several examples of Singleton implementations are provided, including basic, lazy instantiation, and thread-safe versions.

Uploaded by

zabronjoshua003
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views7 pages

Java Singleton Class

The document explains the Java Singleton Design Pattern, which ensures that a class has only one instance and provides global access to it. It discusses the advantages of using this pattern, such as memory efficiency and resource control, particularly in multithreaded applications. Several examples of Singleton implementations are provided, including basic, lazy instantiation, and thread-safe versions.

Uploaded by

zabronjoshua003
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 7

Page 1 of 7

Home Whiteboard Online Compilers Practice Articles AI Assistant

Chapters Categories

SQL HTML CSS Javascript Python Java C C++ PHP Scala C#

Java - Singleton Class

Java Singleton Design Pattern


Singleton pattern is one of the simplest design patterns in Java. This type of design
pattern comes under creational pattern as this pattern provides one of the best ways to
create an object.

Java Singleton Class


This pattern involves a single class which is responsible to create an object while making
sure that only single object gets created. This class provides a way to access its only
object which can be accessed directly without need to instantiate the object of the class.

Since there is only one Singleton instance, any instance fields of a Singleton will occur
only once per class, just like static fields. Singletons often control access to resources,
such as database connections or sockets.

For example, if you have a license for only one connection for your database or your
JDBC driver has trouble with multithreading, the Singleton makes sure that only one
connection is made or that only one thread can access the connection at a time.

Advantages of Singleton Design Pattern


Singleton design pattern saves memory because only one object instance is created and
it also provides global access to its instance.

Use of Singleton Design Pattern


The singleton design pattern is used when you want to create such a class that has only
one instance. It is mainly used in multithreading to create multi-threaded and database-
related applications.
Page 2 of 7

Some of the designs where singleton design pattern is used:

To create logger classes

To create configuration management-related classes

To create classes related to database connection pooling

To create a class for the caching mechanism

Java Singleton Class/Design Pattern: Examples

Example 1
The easiest implementation consists of a private constructor and a field to hold its result,
and a static accessor method with a name like getInstance().

The private field can be assigned from within a static initializer block or, more simply,
using an initializer. The getInstance() method (which must be public) then simply
returns this instance −

Open Compiler

package com.tutorialspoint;

class Singleton {

private static Singleton singleton = new Singleton( );

/* A private Constructor prevents any other


* class from instantiating.
*/
private Singleton() { }

/* Static 'instance' method */


public static Singleton getInstance( ) {
return singleton;
}

/* Other methods protected by singleton-ness */


protected void demoMethod( ) {
System.out.println("demoMethod for singleton");
}
Page 3 of 7

}
public class Tester {

public static void main(String[] args) {


Singleton tmp = Singleton.getInstance( );
tmp.demoMethod( );
}
}

If you compile and execute the above program, you will get the following result −

Output

demoMethod for singleton

Example 2
Following implementation shows a classic Singleton design pattern. In this example, the
ClassicSingleton class maintains a static reference to the lone singleton instance and
returns that reference from the static getInstance() method.

Here, ClassicSingleton class employs a technique known as lazy instantiation to create


the singleton; as a result, the singleton instance is not created until the getInstance()
method is called for the first time. This technique ensures that singleton instances are
created only when needed.

Open Compiler

package com.tutorialspoint;

class ClassicSingleton {

private static ClassicSingleton instance = null;


private ClassicSingleton() {
// Exists only to defeat instantiation.
}

public static ClassicSingleton getInstance() {


if(instance == null) {
instance = new ClassicSingleton();
}
Page 4 of 7

return instance;
}

protected void demoMethod( ) {


System.out.println("demoMethod for singleton");
}
}
public class Tester {

public static void main(String[] args) {


ClassicSingleton tmp = ClassicSingleton.getInstance( );
tmp.demoMethod( );
}
}

If you compile and execute the above program, you will get the following result −

Output

demoMethod for singleton

Example 3

Following implementation shows a threadsafe Singleton object creation. In this example,


the ClassicSingleton class maintains a static reference to the lone singleton instance
and returns that reference from the static getInstance() method which we've made
threadsafe using synchronized keyword.

Open Compiler

class ClassicSingleton {

private static ClassicSingleton instance = null;


private ClassicSingleton() {
// Exists only to defeat instantiation.
}

public static synchronized ClassicSingleton getInstance() {


if(instance == null) {
instance = new ClassicSingleton();
Page 5 of 7

}
return instance;
}

protected void demoMethod( ) {


System.out.println("demoMethod for singleton");
}
}
public class Tester {

public static void main(String[] args) {


ClassicSingleton tmp = ClassicSingleton.getInstance( );
tmp.demoMethod( );
}
}

If you compile and execute the above program, you will get the following result −

Output

demoMethod for singleton

TOP TUTORIALS

Python Tutorial
Java Tutorial

C++ Tutorial

C Programming Tutorial
C# Tutorial

PHP Tutorial

R Tutorial
HTML Tutorial

CSS Tutorial

JavaScript Tutorial
SQL Tutorial

TRENDING TECHNOLOGIES
Page 6 of 7

Cloud Computing Tutorial

Amazon Web Services Tutorial

Microsoft Azure Tutorial


Git Tutorial

Ethical Hacking Tutorial

Docker Tutorial
Kubernetes Tutorial

DSA Tutorial

Spring Boot Tutorial


SDLC Tutorial

Unix Tutorial

CERTIFICATIONS

Business Analytics Certification


Java & Spring Boot Advanced Certification

Data Science Advanced Certification


Cloud Computing And DevOps
Advanced Certification In Business Analytics

Artificial Intelligence And Machine Learning


DevOps Certification
Game Development Certification

Front-End Developer Certification


AWS Certification Training
Python Programming Certification

COMPILERS & EDITORS

Online Java Compiler


Online Python Compiler
Online Go Compiler

Online C Compiler
Online C++ Compiler
Online C# Compiler

Online PHP Compiler


Online MATLAB Compiler
Online Bash Terminal

Online SQL Compiler


Page 7 of 7

Online Html Editor

ABOUT US | OUR TEAM | CAREERS | JOBS | CONTACT US | TERMS OF USE |

PRIVACY POLICY | REFUND POLICY | COOKIES POLICY | FAQ'S

Tutorials Point is a leading Ed Tech company striving to provide the best learning material on
technical and non-technical subjects.

© Copyright 2025. All Rights Reserved.

You might also like