• Skip to main content
  • Skip to primary sidebar
  • Skip to secondary sidebar
  • Skip to footer

Computer Notes

Library
    • Computer Fundamental
    • Computer Memory
    • DBMS Tutorial
    • Operating System
    • Computer Networking
    • C Programming
    • C++ Programming
    • Java Programming
    • C# Programming
    • SQL Tutorial
    • Management Tutorial
    • Computer Graphics
    • Compiler Design
    • Style Sheet
    • JavaScript Tutorial
    • Html Tutorial
    • Wordpress Tutorial
    • Python Tutorial
    • PHP Tutorial
    • JSP Tutorial
    • AngularJS Tutorial
    • Data Structures
    • E Commerce Tutorial
    • Visual Basic
    • Structs2 Tutorial
    • Digital Electronics
    • Internet Terms
    • Servlet Tutorial
    • Software Engineering
    • Interviews Questions
    • Basic Terms
    • Troubleshooting
Menu

Header Right

Home » Java » Classes » Singleton Class in Java with Example
Next →
← Prev

Singleton Class in Java with Example

By Dinesh Thakur

What is a Singleton in Java?

Singleton Class in Java: A given class whose object (an instance of the class) is instantiated only once in JVM (Java Virtual Machine) and that only global instance of an object of the class used for every access. Such objects are mainly immutable.

Singleton (Singleton Pattern) Java is among the simplest design layout. This type of layout patterns belong produce schema, which provides the very best approach to make objects.

We have to declare a method as static that creates a new instance and returns for the first call and returns the same instance for the next calls.  In practice, Singleton is a design pattern which used when a single state has to maintain throughout the application life-cycle.

In java, the Singleton used in logging, caches, thread pools, configuration settings, device driver objects. Singleton Class should be a static class that allows static and final variable which holds the instance of the Singleton class.

Moreover, also there is a method to provide access to this instance for the other classes.

Some basics rules required to design & implement a singleton class

• We have to declare a private constructor, so there is no way to instantiate the class from the outside.
• We have to declare a private static variable of the class.
• We have to declare a static method to return the instance.

Singleton Class in Java could realize in one of the four following ways :

• Early Loading
• Lazy Loading
• Lazy Loading
• Enum type

We’ll be covering the following topics in this tutorial:

  • Advantage of the singleton class
  • Disadvantages of a singleton class in java
  • Difference between static class and singleton pattern (singleton vs static)
  • How to create singleton class in java with example?

Advantage of the singleton class

• Singleton class saves much memory because the object instantiated only once.
• Provide a single point for every access to the object (an instance of the class).
• It allows multiple instances in the future without affecting a singleton class’s clients.

Disadvantages of a singleton class in java

Singleton, one of the most popular design patterns has a lot of serious drawbacks.

• Singleton principle can be violated by many techniques, like cloning.
• Making singleton, a thread-safe also heard.
• Singleton does not support inheritance of the class.
• Singleton does not support distributed environment.

Normal class vs. Singleton class: The instantiation difference between normal and singleton class is that For a normal class we use constructor, whereas for singleton class we use getInstance() method.

Difference between static class and singleton pattern (singleton vs static)

• Singleton class objects are stored in Heap, whereas static objects stored in the stack.
• The singleton object can cloneable, while we can’t clone the static class object.
• The Singleton follow the OOP concepts; static classes don’t follow the OOP concepts.
• The Singleton class create only one instance of the object and reuse it whereas a static class cannot create the instance.

How to create singleton class in java with example?

Implementing Singleton class with getInstance() method

// Java program implementing Singleton class
// with getInstance() method

//java singleton example

// File Name: Singleton.java
class Singleton {
        // static variable one_instance of type Singleton
           private static Singleton one_instance = null;
        // variable of type Message
           public String Message;
       // private constructor restricted to this class itself
           private Singleton() {
Message = “Singleton, one of the most famous design patterns”;
           }
// static method to create instance of Singleton class
           public static Singleton getInstance() {
if (one_instance == null)
one_instance = new Singleton();
                return one_instance;
           }
}
// Driver Class
public class patterns {
         public static void main(String args[]) {
              // instantiating Singleton class with variable First Call
Singleton First = Singleton.getInstance();
             // instantiating Singleton class with variable Second Call
Singleton Second = Singleton.getInstance();
            // instantiating Singleton class with variable Third Call
Singleton Third = Singleton.getInstance();
            // changing variable of instance First Call
First.Message = (First.Message).toUpperCase();
               System.out.println(“First Call “ + First.Message);
               System.out.println(“Second Call “ + Second.Message);
               System.out.println(“Third Call “ + Third.Message);
               System.out.println(“\n“);
           // changing variable of instance Third Call
Third.Message = (Third.Message).toLowerCase();
System.out.println(“First Call “ + First.Message);
               System.out.println(“Second Call “ + Second.Message);
               System.out.println(“Third Call “ + Third.Message);
         }
}

Explanation: In the above Singleton class design patterns, when you first call getInstance() method, the above code creates an object of the Singleton class with name one_instance and return to the variable. Since one_instance is static, it changed from null to some object. On next call getInstance() method, since one_instance is not null, it is returned a variable value, instead of instantiating the Singleton class again. This part is done by if condition.

In the patterns class, we instantiate the singleton class with 3 objects First call, Second Call, the Third Call by calling static method getInstance(). However, actually, after the creation of object First call, variables Second Call and Third Call are pointed to object the First call. Hence, if we change the variables of object First call, that is reflected when we access the variables of objects Second Call and Third Call. Also if we change the variables of Third object Call, that is reflected when we access the variables of objects First call and Second Call.

You’ll also like:

  1. Java Class Rectangle Example
  2. Nested Class in Java Example
  3. Inner class in java with Example
  4. Class methods in Java
  5. Java ArrayList class with Example
Next →
← Prev
Like/Subscribe us for latest updates     

About Dinesh Thakur
Dinesh ThakurDinesh Thakur holds an B.C.A, MCDBA, MCSD certifications. Dinesh authors the hugely popular Computer Notes blog. Where he writes how-to guides around Computer fundamental , computer software, Computer programming, and web apps.

Dinesh Thakur is a Freelance Writer who helps different clients from all over the globe. Dinesh has written over 500+ blogs, 30+ eBooks, and 10000+ Posts for all types of clients.


For any type of query or something that you think is missing, please feel free to Contact us.


Primary Sidebar

Java Tutorials

Java Tutorials

  • Java - Home
  • Java - IDE
  • Java - Features
  • Java - History
  • Java - this Keyword
  • Java - Tokens
  • Java - Jump Statements
  • Java - Control Statements
  • Java - Literals
  • Java - Data Types
  • Java - Type Casting
  • Java - Constant
  • Java - Differences
  • Java - Keyword
  • Java - Static Keyword
  • Java - Variable Scope
  • Java - Identifiers
  • Java - Nested For Loop
  • Java - Vector
  • Java - Type Conversion Vs Casting
  • Java - Access Protection
  • Java - Implicit Type Conversion
  • Java - Type Casting
  • Java - Call by Value Vs Reference
  • Java - Collections
  • Java - Garbage Collection
  • Java - Scanner Class
  • Java - this Keyword
  • Java - Final Keyword
  • Java - Access Modifiers
  • Java - Design Patterns in Java

OOPS Concepts

  • Java - OOPS Concepts
  • Java - Characteristics of OOP
  • Java - OOPS Benefits
  • Java - Procedural Vs OOP's
  • Java - Polymorphism
  • Java - Encapsulation
  • Java - Multithreading
  • Java - Serialization

Java Operator & Types

  • Java - Operator
  • Java - Logical Operators
  • Java - Conditional Operator
  • Java - Assignment Operator
  • Java - Shift Operators
  • Java - Bitwise Complement Operator

Java Constructor & Types

  • Java - Constructor
  • Java - Copy Constructor
  • Java - String Constructors
  • Java - Parameterized Constructor

Java Array

  • Java - Array
  • Java - Accessing Array Elements
  • Java - ArrayList
  • Java - Passing Arrays to Methods
  • Java - Wrapper Class
  • Java - Singleton Class
  • Java - Access Specifiers
  • Java - Substring

Java Inheritance & Interfaces

  • Java - Inheritance
  • Java - Multilevel Inheritance
  • Java - Single Inheritance
  • Java - Abstract Class
  • Java - Abstraction
  • Java - Interfaces
  • Java - Extending Interfaces
  • Java - Method Overriding
  • Java - Method Overloading
  • Java - Super Keyword
  • Java - Multiple Inheritance

Exception Handling Tutorials

  • Java - Exception Handling
  • Java - Exception-Handling Advantages
  • Java - Final, Finally and Finalize

Data Structures

  • Java - Data Structures
  • Java - Bubble Sort

Advance Java

  • Java - Applet Life Cycle
  • Java - Applet Explaination
  • Java - Thread Model
  • Java - RMI Architecture
  • Java - Applet
  • Java - Swing Features
  • Java - Choice and list Control
  • Java - JFrame with Multiple JPanels
  • Java - Java Adapter Classes
  • Java - AWT Vs Swing
  • Java - Checkbox
  • Java - Byte Stream Classes
  • Java - Character Stream Classes
  • Java - Change Color of Applet
  • Java - Passing Parameters
  • Java - Html Applet Tag
  • Java - JComboBox
  • Java - CardLayout
  • Java - Keyboard Events
  • Java - Applet Run From CLI
  • Java - Applet Update Method
  • Java - Applet Display Methods
  • Java - Event Handling
  • Java - Scrollbar
  • Java - JFrame ContentPane Layout
  • Java - Class Rectangle
  • Java - Event Handling Model

Java programs

  • Java - Armstrong Number
  • Java - Program Structure
  • Java - Java Programs Types
  • Java - Font Class
  • Java - repaint()
  • Java - Thread Priority
  • Java - 1D Array
  • Java - 3x3 Matrix
  • Java - drawline()
  • Java - Prime Number Program
  • Java - Copy Data
  • Java - Calculate Area of Rectangle
  • Java - Strong Number Program
  • Java - Swap Elements of an Array
  • Java - Parameterized Constructor
  • Java - ActionListener
  • Java - Print Number
  • Java - Find Average Program
  • Java - Simple and Compound Interest
  • Java - Area of Rectangle
  • Java - Default Constructor Program
  • Java - Single Inheritance Program
  • Java - Array of Objects
  • Java - Passing 2D Array
  • Java - Compute the Bill
  • Java - BufferedReader Example
  • Java - Sum of First N Number
  • Java - Check Number
  • Java - Sum of Two 3x3 Matrices
  • Java - Calculate Circumference
  • Java - Perfect Number Program
  • Java - Factorial Program
  • Java - Reverse a String

Other Links

  • Java - PDF Version

Footer

Basic Course

  • Computer Fundamental
  • Computer Networking
  • Operating System
  • Database System
  • Computer Graphics
  • Management System
  • Software Engineering
  • Digital Electronics
  • Electronic Commerce
  • Compiler Design
  • Troubleshooting

Programming

  • Java Programming
  • Structured Query (SQL)
  • C Programming
  • C++ Programming
  • Visual Basic
  • Data Structures
  • Struts 2
  • Java Servlet
  • C# Programming
  • Basic Terms
  • Interviews

World Wide Web

  • Internet
  • Java Script
  • HTML Language
  • Cascading Style Sheet
  • Java Server Pages
  • Wordpress
  • PHP
  • Python Tutorial
  • AngularJS
  • Troubleshooting

 About Us |  Contact Us |  FAQ

Dinesh Thakur is a Technology Columinist and founder of Computer Notes.

Copyright © 2025. All Rights Reserved.

APPLY FOR ONLINE JOB IN BIGGEST CRYPTO COMPANIES
APPLY NOW