fork download
  1.  
  2. import java.util.ArrayList;
  3. import java.util.List;
  4.  
  5. class Singleton {
  6.  
  7.  
  8. private final static int N = 3;
  9. private static int counter = 0;
  10. private static List<Singleton> instances = new ArrayList<Singleton>();
  11. private int id;
  12.  
  13. private Singleton (int id) {
  14. this.id = id;
  15. }
  16.  
  17. public static Singleton getInstance () {
  18. int instanceId = counter % N;
  19. if (instances.size() < instanceId + 1) {
  20. instances.add(new Singleton(instanceId));
  21. }
  22. counter++;
  23. return instances.get(instanceId);
  24. }
  25.  
  26. public String toString () {
  27. return "Singleton(" + id + ")";
  28. }
  29.  
  30. }
  31.  
  32.  
  33. class SingletonTest {
  34.  
  35.  
  36. public static void main (String[] args) {
  37. System.out.println(Singleton.getInstance());
  38. System.out.println(Singleton.getInstance());
  39. System.out.println(Singleton.getInstance());
  40. System.out.println(Singleton.getInstance());
  41. System.out.println(Singleton.getInstance());
  42. System.out.println(Singleton.getInstance());
  43. System.out.println(Singleton.getInstance());
  44. }
  45.  
  46. }
  47.  
  48.  
  49.  
  50.  
Success #stdin #stdout 0.07s 380160KB
stdin
Standard input is empty
stdout
Singleton(0)
Singleton(1)
Singleton(2)
Singleton(0)
Singleton(1)
Singleton(2)
Singleton(0)