Existem práticas recomendadas de segurança de threads greenDAO?

Estou tendo uma chance comgreenDAO e até agora está indo muito bem. Uma coisa que parece não ser coberta pelos documentos ou pelo site (ou em qualquer outro lugar :() é como ele lida com a segurança de threads.

Conheço o básico mencionado em outros lugares, como "use uma única sessão de dao" (prática geral para Android + SQLite) e entendo muito bem o modelo de memória Java. Os internos da biblioteca até parecem thread-safe, ou pelo menos construídos com essa intenção. Mas nada que eu vi cobre isso:

O greenDAO armazena em cache entidades por padrão. Isso é excelente para um programa completamente de thread único - transparente e um enorme aumento de desempenho para a maioria dos usos. Mas se eu, por exemploloadAll() e modifique um dos elementos, estou modificando o mesmo objetoglobalmente no meu aplicativo. Se estiver usando-o no thread principal (por exemplo, para exibição) e atualizando o banco de dados em um thread em segundo plano (como é correto e adequado), há problemas óbvios de encadeamento, a menos que seja tomado cuidado extra.

O greenDAO faz algo "oculto" para se proteger contra problemas comuns de encadeamento no nível do aplicativo? Por exemplo, modificar uma entidade em cache no thread da interface do usuário e salvá-lo em um thread em segundo plano (melhor espero que eles não entremeados! Especialmente ao modificar uma lista!)? Existem "práticas recomendadas" para protegê-las, além de preocupações gerais de segurança de threads (ou seja, algo que o greenDAO espera e trabalhe bem)? Ou todo o cache é fatalmente defeituoso do ponto de vista de segurança de aplicativos multithread?