Существует книга, названная Код . Я не могу помнить, кто записал его, но это проходит основы большого количества материала, который мы (программисты) знаем и берем для предоставленного, который людей мы говорим для знания также. Все от того, как Вы считаете двоичный файл к тому, как процессоры работают. Это не имеет ничего имеющего дело с языками программирования в нем (хорошо от того, что я помню), но это - довольно хорошая краткая информация. Я признаю, что имею также школу, которая полагает, что необходимо знать, как компьютер работает, чтобы быть в состоянии эффективно программировать вещи для нее.
Инкапсулируйте его в объект - примерно так:
class FlippingByteBuffer {
ByteBuffer buffer;
boolean isInUse;
boolean/Enum mode; //Is it read or write?
}
Затем вы можете использовать его в своем коде:
//I'm about to read
FlippingByteBuffer fbb =...;
fbb.beginReading();
doSomething(fbb.getByteBuffer());
fbb.finishReading();
Таким образом вы узнаете, когда что-то происходит. Вы даже можете начать использовать Lock
, чтобы гарантировать, что чтение и запись блокируют друг друга и т. Д.
Если есть что-то посередине (вы вызываете что-то, и он вам перезванивает), вы Вы можете поместить свой FlippingByteBuffer
на карту и / или поместить его в ThreadLocal
(ewww!), или сделать FlippingByteBuffer
реализацией ByteBuffer
. может иметь возможность автоматически переключаться между режимами (используя методы чтения и записи) в зависимости от того, что вы делаете.
Как насчет того, чтобы обернуть ByteBuffer в другой класс? Этот класс может обновлять и поддерживать желаемое состояние всякий раз, когда вы выполняете операции чтения или записи. Вы также можете захотеть реализовать блокировку или какой-либо другой механизм, чтобы сделать его поточно-ориентированным.