compter combien de fois, c'est la méthode appelée

Comment puis-je compter combien de fois est la dépendance.startService(); l'appel de la méthode? Différents Services sont à l'appel de cette méthode et je ne veux pas combien de fois avez-tout le monde l'appel de la méthode, mais un seul Service. Je devrais obtenir ce résultat :

My name is Service B and i'm depending on Service A
My name is Service C and i'm depending on Service A
My name is Service D and i'm depending on Service B

***Service Service C lets start!***
   1

***Service Service D lets start!***
   2

En fait, ce nombre devrait dire sur la façon dont de nombreux services de ce deux sont en fonction.
Avez-vous des idées comment puis-je faire cela?
J'ai essayé et je ne peux obtenir le nombre global de l'appel de cette méthode sorcière est 3.

Voici mon code:

 ManagerService.java
import java.util.*;
import java.util.concurrent.CountDownLatch;
public class ManagerService
{
public static void main(String[] args) throws InterruptedException
{
//Creating Services
Service serviceA = new Service("Service A", "Thread A");
Service serviceB = new Service("Service B", "Thread B");
Service serviceC = new Service("Service C", "Thread C");
Service serviceD = new Service("Service D", "Thread D");
serviceB.dependesOn(serviceA);
serviceC.dependesOn(serviceA);
serviceD.dependesOn(serviceB);    
System.out.println();
System.out.println("***Service " + serviceC.serviceName +" lets start!***");
serviceC.startService();
System.out.println();
System.out.println("***Service " + serviceD.serviceName +" lets start!***");
serviceD.startService();
}
}
and 
Service.java
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.atomic.AtomicInteger;
public class Service
{
public String serviceName;
public String threadName;
private boolean onOrOff = false;
public List <Service> dependentServicesOn = new ArrayList <Service>();
public CountDownLatch startSignal;
private Integer counter = 0;
public Service(String service_name, String thread_name)
{
this.serviceName = service_name;
this.threadName = thread_name;
}
public void dependesOn(Service s) throws InterruptedException
{
System.out.println("My name is " + serviceName +" and i'm depending on " + s.serviceName);
dependentServicesOn.add(s);   
}
public Service startService() throws InterruptedException
{
for(Service dependency : dependentServicesOn) {
if(!dependency.isStarted()) {
dependency.startService();
}
}
startSignal = new CountDownLatch(1);
//new Thread(new CreateThread(this,startSignal)).start();
startSignal.countDown();
return null;
}
public boolean isStarted()
{
return onOrOff;
}
public void setStarted()
{
onOrOff = true;
}
}
Il n'est pas nécessaire d'ajouter le majeur de la balise dans le titre.
Pourquoi dites-vous "D" doit être 2? Est-ce parce que D dépend de B et que B dépend de A? Voulez-vous parcourir la liste des dépendances de cette façon?
oui je vais essayer d'obtenir ce nombre comme ça. Pensez-vous que ce n'est pas la bonne façon?

OriginalL'auteur njamanjam | 2013-06-28