java - 计算方法被调用了多少次

标签 java methods

如何计算 dependency.startService(); 执行了多少次?方法调用?不同的服务正在调用此方法,我不想知道除了单个服务之外每个人都调用了该方法多少次。我应该得到这个输出:

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

其实这个数字应该是这两个依赖了多少服务。 您对我该怎么做有任何想法吗? 我已经尝试过,但我只能获得调用该方法的全局数量,即 3。

这是我的代码:

 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;
    }
}

最佳答案

您可以设置一个变量count。对于每个方法调用,将值增加 1。如果您想从类外部访问该变量,您可以将其设置为 public static。

所以可以做这样的事情

public static long count = 0;

public Service startService() throws InterruptedException
    {
       count++;
       // method tasks
    }

需要检查的时候可以检查count变量。

关于java - 计算方法被调用了多少次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17368774/

相关文章:

c# - 从字符串调用动态方法

javascript - 是否可以读取 JavaScript 全局/内置对象方法(即 array.filter、.sort)的代码?

java - 使用 IntelliJ 删除源文件注释?

java - Java中的整数除法

java - 如何修复 "java.security.cert.CertificateException: No subject alternative names present"错误?

java - Android 中的 SimpleFormat 未检测到 GMT 时区

java - 具有静态方法的数组

c# - 调用任何方法时 "=>"运算符和 {} 有什么区别?

c++ - C++ 中的类问题

java - 如何在 Java 中获取 Jenkins 作业的状态?