I assumed you already have a model running, so here is the code you need around that to get PlusAnonymousConcurrentUserDataModel working.
// Build your datamodel
DataModel dataModel = ...
// Build anonymous data model with previous datamodel
PlusAnonymousConcurrentUserDataModel anonymousDataModel = new PlusAnonymousConcurrentUserDataModel(dataModel, 100);
// Configure and build your recommender
UserSimilarity similarity = new PearsonCorrelationSimilarity(model);
UserNeighborhood neighborhood = new NearestNUserNeighborhood(25, similarity, model);//
recommender = new CachingRecommender(new GenericUserBasedRecommender(anonymousDataModel, neighborhood, similarity));
now, if the user exists, you can retrieve recommendations like always. Otherwise:
//Get new user id
long newUserID = anonymousDataModel.takeAvailableUser();
// fill a Mahout data structure with the user's preferences
GenericUserPreferenceArray tempPrefs = new GenericUserPreferenceArray(dUserPreferences.size());
int i = 0;
for(Map.Entry<Long, Float> entry : dUserPreferences.entrySet()) {
Long key = entry.getKey();
Float value = entry.getValue();
tempPrefs.setUserID(i, newUserID);
tempPrefs.setItemID(i, key);
tempPrefs.setValue(i, value);
i++;
}
// Add the temporaly preferences to model
anonymousDataModel.setTempPrefs(tempPrefs, newUserID);
// And get recommendations
List<RecommendedItem> recommendations = recommender.recommend(newUserID, count);