Процессы и темы разные. Реализация SharedPreferences в Android является поточно-ориентированной, но не процессно-безопасной. Обычно ваше приложение будет работать в одном и том же процессе, но вы можете настроить его в AndroidManifest.xml, так что, скажем, служба работает в отдельном процессе, чем, скажем, действие.
Для проверки безопасности thready см. SharedPreferenceImpl из ContextImpl.java из AOSP. Обратите внимание, что есть синхронизация везде, где вы ожидаете, что она будет.
private static final class SharedPreferencesImpl implements SharedPreferences {
...
public String getString(String key, String defValue) {
synchronized (this) {
String v = (String)mMap.get(key);
return v != null ? v : defValue;
}
}
...
public final class EditorImpl implements Editor {
public Editor putString(String key, String value) {
synchronized (this) {
mModified.put(key, value);
return this;
}
}
...
}
}
Однако для вашего случая уникального идентификатора вам все равно нужно синхронизироваться, поскольку вы не хотите, чтобы он переключался между get и put.