code: public static ResourceBundle getBundle(String baseName,
              Locale targetLocale, ClassLoader loader,
              ResourceBundle.Control control) {
          boolean expired = false;
          String bundleName = control.toBundleName(baseName, targetLocale);
          Object cacheKey = loader != null ? loader : "null";
          Hashtable<String, ResourceBundle> loaderCache = getLoaderCache(cacheKey);
          ResourceBundle result = loaderCache.get(bundleName);
          if (result != null) {
              long time = control.getTimeToLive(baseName, targetLocale);
              if (time == 0 || time == Control.TTL_NO_EXPIRATION_CONTROL
                      || time + result.lastLoadTime < System.currentTimeMillis()) {
                  if (MISSING == result) {
                      throw new MissingResourceException(null, bundleName + '_'
                              + targetLocale, EMPTY_STRING);
                  }
                  return result;
              }
              expired = true;
          }
          // try to load
          ResourceBundle ret = processGetBundle(baseName, targetLocale, loader,
                  control, expired, result);
  
          if (ret != null) {
              loaderCache.put(bundleName, ret);
              ret.lastLoadTime = System.currentTimeMillis();
              return ret;
          }
          loaderCache.put(bundleName, MISSING);
          throw new MissingResourceException(null, bundleName + '_' + targetLocale, EMPTY_STRING);
      }
docs: Finds the named resource bundle for the specified base name and control.
  
  @param baseName
  the base name of a resource bundle
  @param targetLocale
  the target locale of the resource bundle
  @param loader
  the class loader to load resource
  @param control
  the control that control the access sequence
  @return the named resource bundle
  
  @since 1.6