Opcje uczynienia wątku Java ByteBuffer bezpiecznym

Jakie opcje muszę wykonać, aby wątek ByteBuffer był bezpieczny? Wiadomo, że nie jest bezpieczny dla wątków, ponieważ zabezpiecza pozycję, limit i niektóre (/ wszystkie?) Metody zależą od tego stanu wewnętrznego.

Dla moich celów wystarczy, że wiele wątków do odczytu jest bezpiecznych, ale dla innych przyszłych użytkowników chciałbym wiedzieć, jakie techniki / sztuczki / pułapki muszę wiedzieć, aby było całkowicie bezpieczne.

Co mam na myśli:

Synchronizacja lub użycie blokad ReadWrite dla wszystkich metod. Prawdopodobnie najwolniejsze podejście (?)Podklasowanie ByteBuffera i unikanie utrzymywania stanu związanego z wątkiem, takiego jak pozycja itp. Odpowiednio rzucanie wyjątków dla wszystkich metod, które muszą korzystać ze stanu wewnętrznego. To byłyby posty. Ale czy są jakieś pułapki? (z wyjątkiem tego, że będę musiał odczytać bezpośrednio zmapowaną pamięć do pamięci sterty ...)

Jakich innych sztuczek mogę użyć? Jak bym np. zaimplementuj „bajty klonów w czytaniu” w DirectBuffer - czy to w ogóle możliwe? Czy prawdopodobnie pocięcie pełnego ByteBuffera (ByteBuffer.slice) będzie zaangażowane w jedno rozwiązanie?

Aktualizacja: Co to oznaczapytanie z„zduplikuj (podczas synchronizacji), aby nowa instancja wskazywała na te same zamapowane bajty”