@Override
    public void onChange(String imsi, int days, int daysThreshold) {
        if (days >= daysThreshold) {
            if (!workers.contains(imsi)) {
                workers.add(imsi);
                if (tourists.contains(imsi)) {
                    tourists.remove(imsi);
                    listener.removeTourist(imsi, currentTime);
                }
            }
        } else {//在一个 detector 里不是worker，可能在另一个 detector 里是worker
            for (MetricsDetector detector : detectors) {
                if (detector.isWorker(currentTime, imsi)) {
                    return;
                }
            }
            if (workers.contains(imsi)) {
                workers.remove(imsi);
            }
        }
        if (logger.isInfoEnabled()) {
            if (logger.isDebugEnabled()) {
                StringBuilder sb = new StringBuilder();
                for (String worker : workers) {
                    sb.append(worker);
                    sb.append(",");
                }
                logger.info(format("is worker change: imsi:[%s],days:[%d],works:[%s]", imsi, days, sb.toString()));
            } else {
                logger.info(format("is worker change: imsi:[%s],days:[%d]", imsi, days));
            }
        }

    }