Singleton pattern in Java 1 : Singleton Pattern « Design Pattern « Java

Singleton pattern in Java 1

The Design Patterns Java Companion

Copyright (C) 1998, by James W. Cooper

IBM Thomas J. Watson Research Center

public class InstanceSpooler {
  static public void main(String argv[]) {
    Spooler pr1, pr2;
    //open one printer--this should always work
    System.out.println("Opening one spooler");
    pr1 = Spooler.Instance();
    if (pr1 != null)
      System.out.println("got 1 spooler");
    //try to open another printer --should fail
    System.out.println("Opening two spoolers");

    pr2 = Spooler.Instance();
    if (pr2 == null)
      System.out.println("no instance available");
    //fails because constructor is privatized
    //iSpooler pr3 = new iSpooler();

class Spooler {
  //this is a prototype for a printer-spooler class
  //such that only one instance can ever exist
  static boolean instance_flag = false; //true if 1 instance

  private Spooler() {

  static public Spooler Instance() {
    if (!instance_flag) {
      instance_flag = true;
      return new Spooler();
    } else
      return null;

  public void finalize() {
    instance_flag = false;


Related examples in the same category

1.Singleton Pattern 2Singleton Pattern 2
3.A static class implementation of Singleton patternA static class implementation of Singleton pattern
4.Singleton pattern in Java 2Singleton pattern in Java 2
5.Singleton pattern in Java 3Singleton pattern in Java 3