def refresh_list!(filters = nil)
      @proxies = []

      threads = []
      lock = Mutex.new

      ProxyFetcher.config.providers.each do |provider_name|
        threads << Thread.new do
          provider = ProxyFetcher::Configuration.providers_registry.class_for(provider_name)
          provider_filters = filters && filters.fetch(provider_name.to_sym, filters)
          provider_proxies = provider.fetch_proxies!(provider_filters)

          lock.synchronize do
            @proxies.concat(provider_proxies)
          end
        end
      end

      threads.each(&:join)

      @proxies
    end
def refresh_list!(filters = nil)
      @proxies = []

      threads = []
      lock = Mutex.new

      ProxyFetcher.config.providers.each do |provider_name|
        threads << Thread.new do
          provider = ProxyFetcher::Configuration.providers_registry.class_for(provider_name)
          provider_filters = filters && filters.fetch(provider_name.to_sym, filters)
          provider_proxies = provider.fetch_proxies!(provider_filters)

          lock.synchronize do
            @proxies.concat(provider_proxies)
          end
        end
      end

      threads.each(&:join)

      @proxies
    end
Initialize ProxyFetcher Manager instance for managing proxies

 refresh: true - load proxy list from the remote server on initialization
 refresh: false - just initialize the class, proxy list will be empty ([])

 @return [Manager]

 Update current proxy list using configured providers.

 @param filters [Hash] providers filters